我有一個list<Thing*> clothes
。我想打印出來things
到所需的格式:循環中列表的最後一個元素
+- shirt
+- pants
\\ shoes
所以基本上輸出爲所有,但最後一次迭代相同。到目前爲止,我已經嘗試這樣的:
string CCloset::OutputContent() const {
string output;
for(auto i : this->clothes) {
if(next(i) == this->clothes.end()) {
output.append("\\");
} else {
output.append("+-");
}
output.append(i->Output());
}
return output;
}
的理論是,如果下一次迭代的原因迭代器i
是在list.end()
這意味着我們在最後一個元素,所以我們稍微修改輸出。編譯器說Can't compare structures
。
next()
返回指向下一個元素的迭代器。在最後一個元素的情況下,它會指向列表的結尾。 list.end()
返回迭代器指向列表的結尾。
我錯過了什麼?
「我」不是一個迭代器,而只是「事*」。 –
似乎'std :: vector'會更合適。它也可能會更快。 –
@Torbjörn謝謝你,所以我將不得不使用經典的'for(begin,end,incr)' –