0

リンクされたリストにあるアイテムからいくつかのアドレスを取得するのに少し問題があります。for ループの先頭で作成および初期化された反復子アドレスの代わりに、リスト内にある実際のデータのアドレスを取得したいと考えています。リストの独自の実装を作成せずにこれは可能ですか? これが私が得たコードブロックですが、明らかに思ったように機能していません。

int j = 0;

testIntList.resize(100);
for (list<int>::iterator i = testIntList.begin(); i != testIntList.end(); ++i) {
    *i = j*j;
    int * k = &(*i);
    cout << "the value of the iterator is " << *i << " and the address of the iterator is " << &i << "and the address of the pointer is " << *k << endl;
    j++;
}

このように k を使用して、イテレータの値のアドレスのメモリ内の実際のポインタを取得しようとしています。どんな助けでも大歓迎です。

4

1 に答える 1

2

iはイテレータであるため&i、イテレータのアドレスになります。必要なものではありません。これで、それがイテレータが指すオブジェクトであることがわかった*iので、そのオブジェクトのアドレスはです&*i。それはあなたが入れたものですk。印刷するだけkです。

cout << "the value of the iterator is " << *i
     << " and the address of the iterator is " << &i
     << " and the address of the pointer is " << k << endl;
于 2013-02-26T23:20:13.783 に答える