2017-02-07 2 views
-3

Итак, это короткий запрос.Как вставить ряд элементов в набор в C++?

У меня есть Set container say a;

c = 5, d = 42 - целые числа.

Я хочу вставить все целые числа от 5 до 42 в набор без с использованием цикла for.

Как я могу это сделать ??

Наконец должен выглядеть {5,6,7 ......., 42}

+2

Используйте цикл while – Sam

+4

http://en.cppreference.com/w/cpp/algorithm/iota и http://en.cppreference.com/w/cpp/container/set/insert перегрузить пять. – user4581301

+0

Лучший способ сделать это с помощью цикла for. Зачем вам просить какой-то другой способ? –

ответ

4

Что-то вроде этого:

#include <algorithm> 
#include <iostream> 
#include <iterator> 
#include <set> 

template<class OutputIterator, class T> 
OutputIterator iota_rng(OutputIterator first, T low, T high) 
{ 
     return std::generate_n(first, high - low, [&, value = low]() mutable { return value++; }); 
} 

int main() 
{ 
    std::set<int> s; 
    iota_rng(std::inserter(s, s.begin()), 5, 43); 
    for (auto elem : s) { 
     std::cout << elem << ", ";  
    } 
} 

Live Example

В range-v3 library (предложение как техническая спецификация), вы можете написать это еще более кратко:

#include <range/v3/all.hpp> 
#include <iostream> 
#include <set> 

int main() 
{ 
    std::set<int> s = ranges::view::iota(5, 43); 
    for (auto elem : s) { 
     std::cout << elem << ", ";  
    } 
} 

Live Example

Смежные вопросы