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