2013-02-02 65 views
2

我有項目列表(項目類別) ,我希望獲得列表的最後一個值,並且在運行程序時顯示我很愚蠢的錯誤(錯誤在運行時並且沒有編譯器錯誤)C++ |獲取列表中的最後一個值

這是代碼:

int id = 1; 
if(items.size() > 0) 
    id = items.end()->getID() + 1; 

項目是列表中的變量和的getID()不是項類和它,這回INT

錯誤是「列表迭代器的功能derefereenable「

感謝您的幫助;)

回答

6

items.end(),以及其他容器結束迭代器(例如, items.rend())指向列表末尾的一個。嘗試items.back()->getID() + 1;

+0

哇非常感謝你:)! – user2033370

+1

@ user2033370:如果您覺得這是一個好的答案,請將答案標記爲「已接受」,謝謝。 – sheu

4

std::list::end將一個迭代器返回到容器最後一個元素後面的元素,該元素充當佔位符;試圖訪問它導致未定義的行爲

你可以使用std::list::back或反向迭代std::list::rbegin

嘗試:

items.back()->getID() +1; 
(*items.rbegin())->getID() +1; 
相關問題