参考指针:更改原始值

时间:2019-03-21 17:17:57

标签: c++ reference

我在某处存储了一个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";

请注意,我保持原始人物向量不变。存储指针的目的是使排序便宜。现在我的问题是最后一个任务,它是否正在改变原始人向量?从我阅读代码的方式来看,应该看到相反的结果?抱歉,我不能在这里使用真实的代码...

1 个答案:

答案 0 :(得分:2)

  

最后一个任务,是否正在更改原始人员向量?

要视情况而定。

仅当getSomeSpecialGuyFrom返回对原始人物向量中某个对象的引用并且该引用/指针没有失效时,答案为是。

相关问题