сортировать векторы на карте - PullRequest
1 голос
/ 06 июня 2011

КАК сортировать векторы внутри карты по размеру векторов?

пример:

map<int, vector<int> > 

сортировка по размеру вектора для последующего удаления некоторых элементов в меньшем размере.

1,2,3,4
2,5
6,7,8

после сортировки и удаления ...

1,2,3,4
6,7,8
5

Надеюсь, это прояснит предполагаемую необходимость.

Спасибо

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Карта - это упорядоченный контейнер, в котором предикат заказа применяется к ключу .

Например, вы можете иметь std::map<int, std::vector<int>, std::less<int> >

Здесь ваш ключ не является вектором, поэтому вы не можете делать то, что вы ищете с вашей картой.

Здесь, возможно, вам нужен std::map<std::vector<int>, int, some_struct>, где some_struct - функтор, который определяет строгие порядковые отношения для ваших векторов.

0 голосов
/ 06 июня 2011

Вы можете сделать это при условии, что размер вектора не изменится:

map <int, vector<int> > amap;
vector <int> v;
v.push_back( 42 );
amap.insert( make_pair( v.size(), v ));

Если размер вектора не изменится, вам придется удалить старую запись и заново вставить.

...