C++ベース::区間端点に関する質問
1766 ワード
STL
の環境では,区間はいずれも左閉右開の区間であることが分かった.この点は重要だが、それだけでは足りない.自己加算演算とループを組み合わせる場合は、特に注意してください.
たとえば、コンテナ内の要素が存在するインデックスを返します.
vector<string> values{"hello", "world", "inside", "zhang"};
vector<string>::const_iterator pos = values.begin();
while (*pos != "inside")
++pos;
size_t idx = pos - values.begin(); // idx == 2
しかし、自己加算メカニズムをもっと強要しようとすると、次のように書くかもしれません.
while (*pos++ != "inside");
size_t idx = pos - values.begin();
// idx == 3
// , , `++i` `i++`
// ,
// , *pos == "inside" ,pos