Boost - unordered_set tutorial / ejemplos / NADA?
-
09-10-2019 - |
Pregunta
Me gustaría utilizar unordered_set
en un proyecto.
Sin embargo, la documentación porque es incompleta o simplemente una referencia técnica, no hay ejemplos.
Puede cualquier persona proporcionar enlaces a recursos en línea que se ocupan de él? Los libros también son bienvenidos, preferiblemente libre. Google searching nada de valor devuelto.
Gracias!
Solución
Hay poca documentación sobre el mismo porque se comporta exactamente como std::set
, con la excepción de que se requiere un hash y es igual a la función en lugar de una función de comparación. Sólo busca ejemplos de std::set
, y reemplazarlos con std::unordered_set
y que debe estar bien.
Si tiene que escribir una función hash, hay ejemplos en los documentos, es decir, éste .
Otros consejos
Código para la mayoría de los casos de uso común:
#include <boost/unordered_set.hpp>
using boost::unordered_set;
using std::string;
using std::cout;
using std::endl;
int main (void)
{
// Initialize set
unordered_set<string> s;
s.insert("red");
s.insert("green");
s.insert("blue");
// Search for membership
if(s.find("red") != s.end())
cout << "found red" << endl;
if(s.find("purple") != s.end())
cout << "found purple" << endl;
if(s.find("blue") != s.end())
cout << "found blue" << endl;
return 0;
}
Salida
found red
found blue
Más información
http://www.cplusplus.com/reference/unordered_set/unordered_set/find /
Los contenedores boost son efectivamente una implementación de la interfaz de primera especificado por el Informe C ++ estándar biblioteca técnica (conocida como TR1), como se menciona en los documentos de Boost. Parecen ser parte de los nuevos proyectos de normas de trabajo por ahora. Google se vuelve un poco más documentación / ejemplos si busca TR1 y unordered_set. I como la referencia de MSDN, que también tiene algunas muestras:
me gustaría probar usando los mismos métodos de acceso que utiliza en std::set
u otros recipientes, http://www.boost.org/doc/libs/1_37_0/doc/html/unordered.html parece estar de acuerdo.