我正在寻找一种容器,其中指向对象的指针在项目添加/删除时不会改变(即使从中间)。具有相同优先级的项目的顺序可以改变。
它可以是 Boost 的一部分。想法?
为什么?
所以我可以将对象放在一个地方(一个容器)并且仍然对它们进行排序。 需要将指针传递给其他对象。
在 std::set 的情况下
将 MyType
的指针存储到此类集合的元素是否安全?元素将被每个元素的成员函数修改,但用于比较的属性将在集合中每个对象的生命周期内保持不变。
更新:如果有人决定坚持使用 C++ STD 或转向 Boost; 值得一看:Boost MultiIndex
最佳答案
看看std::set (或 std::multiset ,如果存储的元素可能相同)。
首先,它们是排序的。
然后,在添加/删除操作时,所有引用和迭代器(如果它们在删除时不指向删除的元素)不受影响。
有关容器和引用/迭代器失效检查的更多信息 this thread .
关于c++ - 寻找已排序的容器,其中指向元素的指针在添加/删除时不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44718943/