在给定指向元素的指针的情况下,如何查找元素的索引

时间:2019-04-24 23:30:46

标签: c++ vector

我有一个向量std::vector<MyClass> vec。我试图对向量进行排序,然后找到给定指针的元素的索引

sort(vec.begin(), vec.end(), ...);
auto index = myPointer - &vec[0];

我注意到index的值在对向量进行排序时没有改变,因此是不正确的。有没有办法直接获取正确的索引?

1 个答案:

答案 0 :(得分:1)

标准要求排序的RandomIt符合ValueSwappable的要求,这意味着它在排序过程中使用std::iter_swap交换元素。您的指针地址不会更改,如果它指向排序前的第二个元素,它仍然指向排序后的第二个元素,但是大多数情况下,第二个元素在排序后被更改了。排序后,您需要使用equal_range获取新的指针地址。