Допустим, у нас есть std::set<int>
, и мы хотим создать std::vector<int>
со всеми значениями из этого набора:Инициализировать контейнер с диапазоном итератора контейнера с различным типом
std::set<int> set;
std::vector<int> vec(set.begin(), set.end());
Это очень просто и элегантно. Но скажем, у меня есть std::map<std::string,int>
, и я хочу скопировать все значения в std::vector<int>
. К сожалению нет конструктора, который принимает диапазон итераторов и функцию преобразователя. Почему такого конструктора нет? Есть ли еще один простой и элегантный способ инициализации одного контейнера с разными значениями типа?
Лично я предпочитаю оператор «труба» при использовании повышающих адаптеров 'auto range = m | boost :: adapters :: values; ' – Alan
@Alan Я предпочитаю оператор вызова функции для вызовов функций, и его короче ввести (' | 'vs'() '). –