次の簡単なコードを見てください。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("1234567890");
string::iterator i1 = s.begin();
string::iterator i2 = s.begin();
string s1, s2;
s1.append(i1, ++i1);
s2.append(++i2, s.end());
cout << s1 << endl;
cout << s2 << endl;
}
出力はどうなると思いますか?
あなたは、私のように、それが次のようになることを期待しますか?
1
234567890
違う!それは:
234567890
つまり、最初の文字列は空です。
インクリメント演算子をプレフィックスとする継ぎ目は、イテレータで問題があります。または私は何かを逃していますか?