У меня где-то хранится вектор объекта People
std::vector<People> people;
Теперь я нахожу некоторых особых людей и получаю их ссылку, затем получаю их указатель и сохраняю в векторе:
std::vector<People*> newlist;
Как я получаю этот список:
People& specialPeople = getSomeSpecialGuyFrom(people); // get a referece
newlist.push_back(&specialPeople);
// New I sort the newlist by some property, assuming it's not empty:
std::nth_element(newlist.begin(),
newlist.begin() + 1,
newlist.end(),
[](const People* p1,
const People* p1) {
return p1->reputation > p2->reputation;
});
newlist[0]->name = "Best one";
Обратите внимание, что я не изменяю исходный вектор людей. Смысл хранения указателей в том, чтобы сделать сортировку дешевой. Теперь мой вопрос, последнее назначение, это меняет исходный вектор людей? Из того, как я читаю код, он должен, но на практике я вижу противоположный результат? Извините, я не могу использовать реальный код здесь ...