Заменить тип
на, например, int
.... А var
с именем множества
for (set<type>::iterator i = var.begin(); i != var.end(); i++) {
type element = *i;
}
Лучше всего использовать boost::foreach. Код выше просто станет:
BOOST_FOREACH(type element, var) {
/* Here you can use var */
}
Вы также можете сделать #определить foreach BOOST_FOREACH
так, что вы можете сделать это:
foreach(type element, var) {
/* Here you can use var */
}
Например:
foreach(int i, name_of_set) {
cout << i;
}
Чтобы перечислить все элементы в наборе, можно сделать что-то вроде:
#include <iostream>
#include <set>
using namespace std;
int main ()
{
int myints[] = {1,2,3,4,5};
set<int> myset (myints,myints+5);
set<int>::iterator it;
cout << "myset contains:";
for ( it=myset.begin() ; it != myset.end(); it++ )
cout << " " << *it;
cout << endl;
return 0;
}
Чтобы проверить, можно ли использовать метод find() из класса STL набора
.Используйте итераторы:
std::set<int> si;
/* ... */
for(std::set<int>::iterator it=si.begin(); it!=si.end(); ++it)
std::cout << *it << std::endl;
Обратите внимание, что многие ссылки, такие как MSDN и cplusplus.com, содержат примеры - один пример. ;)
.Мне нравится то, что я вижу в VS2010 Beta2, используя синтаксис лямбда на C++0x:
std::for_each( s.begin(), s.end(),
[](int value)
{
// what would be in a function operator() goes here.
std::cout << value << std::endl;
} );