我有這樣一段代碼:迭代範圍與第一給出最後的迭代器
template<class Iter>
void printRange(Iter begin, Iter last) {
for (Iter i = begin; i != last; i++) {
std::cout << *i << ", ";
}
outstd::cout << *last << ", ";
}
我的問題是:我怎麼能打印出最後一個元素,也優雅?循環播放最後一個元素似乎不是一個好的和正確的解決方案,有沒有更好的方法?請注意,我不能使用< =運算符或boost或任何stl特定功能。
通常情況下,「最後」迭代器真的指向*過去*的最後一個元素,所以你的代碼可以正常工作並打印出每一個元素。你確定'last'也指向一個有效的元素嗎? – jalf
是的,其實這不是我的代碼,我只是嘗試使用/修改它。如果它是*過去的*,我會稱它爲* end *,無論如何。 – WonderCsabo
@jalf,當你用「find」找到你的迭代器並且你想用它們打印它們之間的所有內容時,我遇到了同樣的問題。 –