Tengo una estructura que tiene una clave única. Quiero insertar instancias de estas estructuras en un conjunto. Sé que para hacer esto, el operador < tiene que estar sobrecargado para que el conjunto pueda hacer una comparación para hacer la inserción.Cómo tener un conjunto de estructuras en C++
El siguiente no funciona:
#include <iostream>
#include <set>
using namespace std;
struct foo
{
int key;
};
bool operator<(const foo& lhs, const foo& rhs)
{
return lhs.key < rhs.key;
}
set<foo> bar;
int main()
{
foo *test = new foo;
test->key = 0;
bar.insert(test);
}
test.cpp: 20: error: no existe función de emparejamiento de llamada a 'std :: set, std :: asignador > :: insert (foo * &) ' El error me parece bastante claro. Estás intentando poner un puntero donde debería estar un objeto. –
dcousens
Ser capaz de editar una pregunta es agradable, pero no debe cambiar su significado al hacerlo. Esto invalida cualquier respuesta (posiblemente correcta) y obliga a los futuros lectores a mirar primero la edición. No hay ninguna limitación en StackOverflow con respecto a una misma persona que publique varias preguntas dentro de un corto período de tiempo. En realidad, eso es incluso una buena idea. – ereOn