順序付けられていないセットがあるとします
unordered_set<int> my_set;
myset.insert(1);
myset.insert(2);
myset.insert(3);
それをどのように繰り返すのですか?各要素に一度到達する限り、任意の順序で反復する必要はありません。私は試した
for (int i = 0; i < my_set.size(); i++)
cout << my_set[i];
無駄に。
順序付けられていないセットがあるとします
unordered_set<int> my_set;
myset.insert(1);
myset.insert(2);
myset.insert(3);
それをどのように繰り返すのですか?各要素に一度到達する限り、任意の順序で反復する必要はありません。私は試した
for (int i = 0; i < my_set.size(); i++)
cout << my_set[i];
無駄に。
新しい範囲ベースの for ループを使用できます。
std::unordered_set<T> mySet;
for (const auto& elem: mySet) {
/* ... process elem ... */
}
または、より伝統的な反復子ベースのループを使用できます。
std::unordered_set<T> mySet;
for (auto itr = mySet.begin(); itr != mySet.end(); ++itr) {
/* ... process *itr ... */
}
または、サポートがない場合はauto
、コンパイラで C++11 がサポートされていない可能性があります。
std::unordered_set<T> mySet;
for (std::unordered_set<T>::iterator itr = mySet.begin(); itr != mySet.end(); ++itr) {
/* ... process *itr ... */
}
お役に立てれば!
これまでにそれらを使用したことはありませんが、イテレータを使用するのと同じ方法で使用できると思いますstd::set
:
for(unordered_set<int>::iterator a = my_set.begin(); a != my_set.end(); ++a) {
int some_int = *a;
}