c++ - 寻找已排序的容器,其中指向元素的指针在添加/删除时不会改变

标签 c++ c++11 pointers boost stl

我正在寻找一种容器,其中指向对象的指针在项目添加/删除时不会改变(即使从中间)。具有相同优先级的项目的顺序可以改变。

它可以是 Boost 的一部分。想法?

为什么?

所以我可以将对象放在一个地方(一个容器)并且仍然对它们进行排序。 需要将指针传递给其他对象。

在 std::set 的情况下

MyType 的指针存储到此类集合的元素是否安全?元素将被每个元素的成员函数修改,但用于比较的属性将在集合中每个对象的生命周期内保持不变。

更新:如果有人决定坚持使用 C++ STD 或转向 Boost; 值得一看:Boost MultiIndex

最佳答案

看看std::set (或 std::multiset ,如果存储的元素可能相同)。

首先,它们是排序的。

然后,在添加/删除操作时,所有引用和迭代器(如果它们在删除时不指向删除的元素)不受影响。

有关容器和引用/迭代器失效检查的更多信息 this thread .

关于c++ - 寻找已排序的容器,其中指向元素的指针在添加/删除时不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44718943/

相关文章:

c++ - 共享对象加载 : version Qt_5 not defined in file

c++ - cygwin下如何改用g++ mingw工具链

c++ - 是否需要删除包含对象的 "pair"?

c++ - 在局部函数中分配和初始化指针

c - 结构和指针有问题(不兼容的指针类型)

尝试传递结构时 C++ 代码崩溃

c++ - 递归解决方案未按预期工作/遇到错误

c++ - 从 "wcslen"替换为 "strnlen_s"时,使用 "const char*"进行类型转换是否正确?

c++ - 模板编程 : ambiguous call to overloaded function

c - 为什么需要转换指针算法?