8
私はタイプがset<int>
であり、どこかにイテレータを入れたいと思っています。セット内の任意のインデックスから要素を取得する
私は次のことをやっている:
set<int>::iterator it = myset.begin() + 5;
これが動作していないと私はそれをしたい場所にイテレータを取得するための正しい方法は何である理由私は好奇心旺盛です。
私はタイプがset<int>
であり、どこかにイテレータを入れたいと思っています。セット内の任意のインデックスから要素を取得する
私は次のことをやっている:
set<int>::iterator it = myset.begin() + 5;
これが動作していないと私はそれをしたい場所にイテレータを取得するための正しい方法は何である理由私は好奇心旺盛です。
myset.begin() + 5;
は、ランダムアクセスイテレータに対してのみ機能します。イテレータはstd::set
ではありません。
は、機能std::advance
あります:
auto it = std::next(myset.begin(), 5);
std::next
が必要です:C++ 11では
set<int>::iterator it = myset.begin();
std::advance(it, 5); // now it is advanced by five
も似ていますが、その引数を変更しないstd::next
があります前方イテレータ。しかし、std::set<int>::iterator
は双方向イテレータなので、advance
とnext
の両方が動作します。
CとC++は同じ言語ではありません。 –