добавление элементов вектора в неупорядоченный набор

Есть ли простой способ добавить все элементы vector в unordered_set? Они одного типа. Прямо сейчас я использую цикл for и мне интересно, есть ли лучший способ сделать это


person jamesatha    schedule 12.10.2012    source источник


Ответы (2)


Если вы строите unordered_set, то:

std::vector<int> v;
std::unordered_set<int> s(v.begin(), v.end());
person mythagel    schedule 12.10.2012

Простите меня, если в моем синтаксисе есть небольшие ошибки, но вы можете попробовать функцию std::copy, он предназначен для этой цели.

std::vector<int> v;
std::unordered_set<int> s;
std::copy(v.begin(),v.end(),std::inserter(s,s.end()));
person Karthik T    schedule 12.10.2012
comment
std::inserter требуется для вставки в ассоциативный контейнер. - person James McNellis; 12.10.2012
comment
да, я знал, что что-то упустил, исправил. - person Karthik T; 12.10.2012
comment
s.end() остается действительным, даже если контейнер перефразируется? - person Johannes Schaub - litb; 09.12.2014
comment
если v пусто, то к s будет добавлен 0! - person James Harper; 08.07.2015