为什么添加新项时list.end()不改变?

Why does list.end() not change when new item is added?

本文关键字:改变 end 添加 新项时 list 为什么      更新时间:2023-10-16

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

由于我的程序现在太大了,我做了一个新的,更小的来展示问题:

#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();