¿Cuál sería la forma más elegante también fijar el siguiente código:Proporcionar menos de operador para un elemento de un par
#include <vector>
#include <map>
#include <set>
using namespace std;
typedef map< int, int > row_t;
typedef vector<row_t> board_t;
typedef row_t::iterator area_t;
bool operator< (area_t const& a, area_t const& b) {
return(a->first < b->first);
};
int main(int argc, char* argv[])
{
int row_num;
area_t it;
set< pair< int, area_t > > queue;
queue.insert(make_pair(row_num, it)); // does not compile
};
Una forma de solucionarlo se está moviendo la definición de menos < a namespace std (lo sé, que no se supone que hacerlo.)
namespace std {
bool operator< (area_t const& a, area_t const& b) {
return(a->first < b->first);
};
};
Otra solución obvia es la definición de menos de < para par < int, area_t> pero me gustaría evitar eso y ser capaz de definir el operador solo para el elemento del par donde no está definido.
Ese es un nombre interesante que tiene para su conjunto allí;) –
¿Qué hay en un nombre? Una rosa con cualquier otro nombre huela tan dulce. –