libreria - sort algorithm c++
std:: back_inserter para un std:: set? (1)
set
no tiene push_back
porque la posición de un elemento está determinada por el comparador del conjunto. Use std::inserter
.begin()
y páselo .begin()
:
std::set<int> s1, s2;
s1 = getAnExcitingSet();
transform(s1.begin(), s1.end(),
std::inserter(s2, s2.begin()), ExcitingUnaryFunctor());
El iterador de inserción llamará a s2.insert(s2.begin(), x)
donde x
es el valor pasado al iterador cuando se escribe en él. El conjunto usa el iterador como una sugerencia de dónde insertar. Podrías usar bien s2.end()
.
Supongo que esta es una pregunta simple. Necesito hacer algo como esto:
std::set<int> s1, s2;
s1 = getAnExcitingSet();
std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor());
Por supuesto, std::back_inserter
no funciona porque no hay push_back
. std::inserter
también necesita un iterador? No he usado std::inserter
así que no estoy seguro de qué hacer.
¿Alguien tiene alguna idea?
Por supuesto, mi otra opción es usar un vector paras2
, y luego simplemente ordenarlo más tarde. Tal vez eso es mejor?