我有項目列表(項目類別) ,我希望獲得列表的最後一個值,並且在運行程序時顯示我很愚蠢的錯誤(錯誤在運行時並且沒有編譯器錯誤)C++ |獲取列表中的最後一個值
這是代碼:
int id = 1;
if(items.size() > 0)
id = items.end()->getID() + 1;
項目是列表中的變量和的getID()不是項類和它,這回INT
錯誤是「列表迭代器的功能derefereenable「
感謝您的幫助;)
我有項目列表(項目類別) ,我希望獲得列表的最後一個值,並且在運行程序時顯示我很愚蠢的錯誤(錯誤在運行時並且沒有編譯器錯誤)C++ |獲取列表中的最後一個值
這是代碼:
int id = 1;
if(items.size() > 0)
id = items.end()->getID() + 1;
項目是列表中的變量和的getID()不是項類和它,這回INT
錯誤是「列表迭代器的功能derefereenable「
感謝您的幫助;)
items.end()
,以及其他容器結束迭代器(例如, items.rend()
)指向列表末尾的一個。嘗試items.back()->getID() + 1;
。
std::list::end將一個迭代器返回到容器最後一個元素後面的元素,該元素充當佔位符;試圖訪問它導致未定義的行爲。
你可以使用std::list::back或反向迭代std::list::rbegin
嘗試:
items.back()->getID() +1;
(*items.rbegin())->getID() +1;
哇非常感謝你:)! – user2033370
@ user2033370:如果您覺得這是一個好的答案,請將答案標記爲「已接受」,謝謝。 – sheu