Как получить элементы в наборе в C++? [дубликат]

12
задан hivert 25 April 2014 в 06:54
поделиться

4 ответа

Заменить тип на, например, 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;
}
19
ответ дан 2 December 2019 в 04:43
поделиться

Чтобы перечислить все элементы в наборе, можно сделать что-то вроде:

#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 набора

.
3
ответ дан 2 December 2019 в 04:43
поделиться

Используйте итераторы:

std::set<int> si;
/* ... */
for(std::set<int>::iterator it=si.begin(); it!=si.end(); ++it)
    std::cout << *it << std::endl;

Обратите внимание, что многие ссылки, такие как MSDN и cplusplus.com, содержат примеры - один пример. ;)

.
6
ответ дан 2 December 2019 в 04:43
поделиться

Мне нравится то, что я вижу в 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; 
               } );
2
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: