2012-02-12 75 views
1

我目前已經創建了一個指向列表,指向另一列整數的每個第五個元素。我試圖打印出這個指針列表來確保它指向另一個列表的正確元素。打印一個指針列表

我試過各種方法來做到這一點,但他們都沒有工作。

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 2012-02-12 18:59:41

+1

也請不要說「似乎不工作」,這不會提供任何信息 – Kos 2012-02-12 19:00:25

+1

如果這些基礎知識尚不清楚,最好還是開始閱讀一本好的C++書籍。當你看到那章時,要特別注意「迭代器」。 – 2012-02-12 19:02:10

回答

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 2012-02-12 19:50:43

0

您在這裏遇到嚴重問題。我只是給你一些提示,希望你自己在10分鐘內找到答案。

在第一個for循環中,您正在增加指針本身而不是列表。

3

假設您使用標準庫容器或具有類似接口的容器,那麼begin()end()會返回迭代器,而不是int *。在大多數情況下,代碼不應該編譯。