sort libreria cstdlib algorithms c++ algorithm stl

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 para s2 , y luego simplemente ordenarlo más tarde. Tal vez eso es mejor?