私は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