Sorting 如何在不更改元素指针的情况下对boost::ptr_向量进行排序
我有一个将元素存储在boost::ptr_向量中的算法。对于算法来说,重要的是,一旦分配给元素的指针在ptr_向量被销毁之前不会改变。另一方面,我需要对ptr_向量进行排序。我假设(可能很天真)由于常规std::sort交换元素,它只需交换ptr_向量中指针的顺序,而无需new和delete。另一方面,我在指示中看到排序ptr_向量实际上可能会改变元素指针。有人能证实确实发生了重新分配吗?有没有办法避免它?pointervector作为一个容器,显然正在进行排序 如果希望保留所有迭代器和元素引用的有效性,那么应该使用Sorting 如何在不更改元素指针的情况下对boost::ptr_向量进行排序,sorting,boost,c++11,Sorting,Boost,C++11,我有一个将元素存储在boost::ptr_向量中的算法。对于算法来说,重要的是,一旦分配给元素的指针在ptr_向量被销毁之前不会改变。另一方面,我需要对ptr_向量进行排序。我假设(可能很天真)由于常规std::sort交换元素,它只需交换ptr_向量中指针的顺序,而无需new和delete。另一方面,我在指示中看到排序ptr_向量实际上可能会改变元素指针。有人能证实确实发生了重新分配吗?有没有办法避免它?pointervector作为一个容器,显然正在进行排序 如果希望保留所有迭代器和元素引用
- boost::稳定向量
- 或者可能是与boost多索引的某种组合
可悲的是(?)我不认为目前有任何东西结合了这两个概念。当然,这样的事情是可以写出来的,然后,
Boost Intrusive
可以非常有助于管理实现。我现在认为我的担心可能是不合理的。这似乎是指标准的库排序,它确实会导致元素的交换和重新分配。但是ptr_向量有一个sort的成员函数实现,我完全有理由期望它保留元素指针并避免重新分配