Как вывести содержимое set в цикле?
for(auto i : set_object)
cout << i << endl;
:)
Типа:
int main(int argc, const char * argv[])
{
set<int> s = { 1,2,45,23,19,8};
for(auto i : s)
cout << i << endl;
}
Можно использовать обычный цикл for с итераторами, либо цикл на основе диапазона. Можно также использовать стандартные алгоритмы такие, как, например, std::copy или std::copy_if
Вот примеры вывода
std::set<int> s{ 1, 2, 3, 4, 5 };
for (std::set<int>::iterator it = s.begin(); it != s.end(); ++it)
{
std::cout << *it << ' ';
}
std::cout << std::endl;
for (const auto &item : s) std::cout << item << ' ';
std::cout << std::endl;
std::copy(s.begin(), s.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
std::copy_if(s.begin(), s.end(),
std::ostream_iterator<int>(std::cout, " "),
[](int x) { return x % 2 != 0; });
std::cout << std::endl;
Вывод этих фрагментов кода будет следующим
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 3 5
Объявление итератора в этом цикле
for (std::set<int>::iterator it = s.begin(); it != s.end(); ++it)
можно упростить
for (auto it = s.begin(); it != s.end(); ++it)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей