2012-02-12 3 views
1

私は現在、別のintのリストの5番目の要素を指すポインタのリストを作成しました。私はそれが他のリストの右の要素を指していることを確認するために、このポインタのリストを印刷しようとしています。ポインタのリストを出力する

私はこれを行うにはさまざまな方法を試しましたが、どれもうまくいかないようです。

for (int* t = pointersList.begin(); t != pointersList.end(); ++t) 
{ 
    cout << *t << endl; 
} 

または

for (int i = 0; i < pointersList.size(); ++i) 
{ 
    int* itr; 
    itr = pointersList.begin()+i; 
    cout << *itr; 
} 

私はまた、ベクター()のようにそれをaccesssingしようとしたが、これらのどれも動作するようには思えません。

私は要素のメモリ位置へのポインタがあることを理解(と私は*を使用します。ここで、それはだ)が、私は&あるいは&*を使用することを想定していたときに私が知っていることはありません。

+0

「アレイ」と言いたいときはおそらく「リスト」と言っていますか?同じではありません。リストは通常​​リンクされたリストを意味します – Kos

+1

また、「動作していないようです」とは言わないでください、それは何の情報も与えません。 – Kos

+1

おそらく、良い基本的なC++の本を読んでいるのは、その章に行くときは、「イテレータ」に注目してください。 –

答えて

1

以下を実行してください。これはうまくいくはずです。これはあなたのポインタの値を印刷するようになります。これがあなたが探していたものだと願っています。

for(int a = 0; a < pointersList.size(); a ++) 
    { 
    std::list<int*>::iterator i = pointersList.begin(); 

    advance(i, a); 
    int* totry = *i; 
    cout << *totry; 
    cout << ","; 
    } 
+0

が完璧に機能したければ、私はあなたにそれの実現例を示すことができます!ありがとう – Johnston

0

ここには深刻な問題があります。私はちょうどあなた自身の10分で答えを見つけることを望むヒントを与えます。

最初のforループでは、リストの代わりにポインタ自体が増えています。

3

標準ライブラリコンテナを使用しているか、同様のインターフェイスを使用していると仮定すると、begin()end()はint *ではなくイテレータを返します。ほとんどの場合、コードはコンパイルすべきではありません。

関連する問題