如何根据矢量的大小对地图内的矢量进行排序?
示例:
map<int, vector<int> >
基于向量的大小进行排序,以便稍后在较小的大小内删除一些元素。
1,2,3,4
2,5
6,7,8
......
1,2,3,4
6,7,8
5
我希望这能澄清预期的需要。
由于
答案 0 :(得分:2)
地图是一个有序容器,订单谓词适用于该。
例如,您可以拥有std::map<int, std::vector<int>, std::less<int> >
此处您的密钥不是矢量,因此您无法使用地图执行所需的操作。
在这里,您可能想要一个std::map<std::vector<int>, int, some_struct>
,其中some_struct
是一个仿函数,可以在向量上定义严格的顺序关系。
答案 1 :(得分:0)
如果矢量大小没有改变,你可以这样做:
map <int, vector<int> > amap;
vector <int> v;
v.push_back( 42 );
amap.insert( make_pair( v.size(), v ));
如果向量的大小确实发生了变化,则必须删除旧条目并重新插入。