我有一個std::list<std::string>
的迭代器,但是當我嘗試使用+=
來改進它時,出現編譯錯誤。爲什麼我不能在列表迭代器上使用+ =運算符?
的代碼是:
#include <list>
#include <iostream>
#include <string>
int main() {
std::list<std::string> x;
x.push_front("British");
x.push_back("character");
x.push_front("Coding is unco");
x.push_back("Society");
x.push_back("City Hole");
auto iter = x.begin();
iter += 3;
//std::advance(iter, 3);
x.erase(iter);
for (auto &e: x) {
std::cout << e << "\n";
}
}
如果我編譯這個使用clang++ -std=c++11 -o li li.cpp
,我得到:
li.cpp:13:10: error: no viable overloaded '+='
iter += 3;
~~~~^~
1 error generated.
爲什麼我不能用+=
這個迭代器?
@EdChum更準確地說,你不能像這樣遞增列表迭代器。 (+ Op知道前進,它在評論中) – Borgleader
'iter + = 3'意思是iter = iter + 3',這是你不能做的。 – Mudi
提供的錯誤信息是相當清楚我真的不明白什麼是問題 – user463035818