この質問はstd::set
とstd::unsorted_set
の両方に当てはまります。イテレータを介してset要素の "index"を取得する
私は、セットの要素に対するイテレータを持っています。私はイテレータを使用して、要素内の位置に基づいて要素の「インデックス」を取得したいと考えています。例えば
次のように、私のセットのためのインデックスは次のようになります。
int index = 0;
for(MySetType::iterator begin = mySet.begin(); begin != mySet.end(); begin++)
{
cout << "The index for this element is " << index;
index++;
}
私はイテレータを用いた演算を行って試してみましたが、それは動作しません:
int index = mySetIterator - mySet.begin();
はにどのような方法がありますイテレータを使用して、セット内の位置に基づいてこのようなインデックス値を取得しますか?
2回の反復子との間の "距離" を得るための正しい方法は[ 'のstd :: distance'(http://en.cppreference.com/w/cpp/iterator/distance)関数です。しかし、使用する前にJackの答えをお読みください。 –