所以我有一些 C++ 类,它们使用映射和键类作为一种数据结构。在我的插入方法中,我使用典型的 map.insert。我希望这个函数返回一个指针,这样我就可以在插入的元素中修改一些值(不是用于比较的值)。所以我想知道这是否安全..
template<typename T>
NodeT<T> * TreeT<T>::
MakeNode(PointT point)
{
NodeT<T> * prNode = new NodeT<T>;
//set the contents for the node
prNode->SetNode(point, m_dTolerance);
//Create the key class using the
VectorKey key(point, m_dTolerance);
//Store the key,node as a pair for easy access
return_val = m_tree.insert( pair<VectorKey, NodeT<T> >(key, *prNode) );
if (return_val.second == false)
//if return_val.second is false it wasnt inserted
prNode = NULL;
else
//it was inserted, get a pointer to node
prNode = &(return_val.first->second); //is this safe if I plan to use it later?
return prNode;
}
我似乎学会了一种艰难的方式,即我的原始指针(我用 new 创建的那个)在插入后指向错误的元素。谁能告诉我这是为什么?所以我使用 return_val 迭代器来获取正确的指针。我有点不想返回迭代器,但如果它更安全,那么我会......
谢谢!