私は2つのリストを持つprogrammに取り組んでいます。リストの1つにオブジェクトが格納されます。他のリストは、オブジェクトを含むリストの項目へのポインタを格納する。新しいアイテムがオブジェクトリストに追加されると、オブジェクトへのポインタを取得したいと思います。しかし、私はいつも同じポインタを返します。 新しいアイテムが追加されたときにlist.end()が変更されないのはなぜですか?
私のプログラムは大きなことなので
は今、私はあなたの問題を表示するための新しい、より小さなものを作っ:#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;
}
結果:私はプログラムの開発は別の2をプリントアウトするために期待
0x22fe20
0x22fe20
ポインタのリストの終わりが変更されている必要がありますか?なぜ私は同じポインタの2倍の時間を与えますか?
本当にありがとうございます。
を意味すると思いますか? –
'&* Testlist.end()'は未定義の動作です。 – Cornstalks
'.end()'は最後の項目でも項目でもありません。最後のものの後に行く*偽のアイテムです。それは単なるマーカーなので、リスト自体には存在しません。 – HolyBlackCat