Да, вы можете. Векторы, как и все контейнеры, сравнимы. В результате map
отсортирует векторы в лексикографическом порядке.
Проблема в том, что point
несопоставимо. Вы должны определить порядок сортировки для points
, а затем это, в свою очередь, определит лексикографический порядок для vector<point>
.
class point
{
public:
int x;
int y;
};
bool operator<( point const &l, point const &r ) {
return l.x < r.x? true
: r.x < l.x? false
: l.y < r.y;
}
Более простое решение - использовать std::pair
вместо определения собственного point
.
typedef pair< int, int > point; // point::first = x, point::second = y
// pair is already comparable; order defined as in previous example
typedef vector<point> pointvec; // OK