我在某处存储了一个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";
请注意,我保持原始人物向量不变。存储指针的目的是使排序便宜。现在我的问题是最后一个任务,它是否正在改变原始人向量?从我阅读代码的方式来看,应该看到相反的结果?抱歉,我不能在这里使用真实的代码...
答案 0 :(得分:2)
最后一个任务,是否正在更改原始人员向量?
要视情况而定。
仅当getSomeSpecialGuyFrom
返回对原始人物向量中某个对象的引用并且该引用/指针没有失效时,答案为是。