gpt4 book ai didi

c++ - 为什么添加新项目时 list.end() 没有改变?

转载 作者:行者123 更新时间:2023-11-27 23:58:54 26 4
gpt4 key购买 nike

我正在开发一个有两个列表的程序。列表之一存储对象。另一个列表存储指向包含对象的列表项的指针。当一个新项目被添加到对象列表时,我想获得指向该对象的指针。但我总是返回相同的指针。

由于我的程序太大了,所以我制作了一个新的、较小的程序来向您展示问题:

#include <iostream>
#include <list>

using namespace std;

class C_Test
{
public:
int a;
};

int main()
{
std::list<class C_Test> Testlist;
C_Test A;
C_Test B;
Testlist.push_back(A);
C_Test * p = &*Testlist.end();
cout << p << endl;
Testlist.push_back(B);
p = &*Testlist.end();
cout << p;
}

结果:

0x22fe20
0x22fe20

我希望程序打印出两个不同的指针,因为列表的末尾应该已经改变了吗?为什么它给我两次相同的指针?

我真的很感谢你在这件事上的帮助。

最佳答案

对于初学者来说,取消引用成员函数 end 返回的迭代器具有未定义的行为。

我想你的意思是

 C_Test * p = &Testlist.back();

关于c++ - 为什么添加新项目时 list.end() 没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40576014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com