我有一个向量std::vector<MyClass> vec
。我试图对向量进行排序,然后找到给定指针的元素的索引
sort(vec.begin(), vec.end(), ...);
auto index = myPointer - &vec[0];
我注意到index
的值在对向量进行排序时没有改变,因此是不正确的。有没有办法直接获取正确的索引?
答案 0 :(得分:1)
标准要求排序的RandomIt
符合ValueSwappable的要求,这意味着它在排序过程中使用std::iter_swap
交换元素。您的指针地址不会更改,如果它指向排序前的第二个元素,它仍然指向排序后的第二个元素,但是大多数情况下,第二个元素在排序后被更改了。排序后,您需要使用equal_range
获取新的指针地址。