在地图中排序向量

时间:2011-06-06 14:55:25

标签: c++ vector maps containers

如何根据矢量的大小对地图内的矢量进行排序?

示例:

map<int, vector<int> > 

基于向量的大小进行排序,以便稍后在较小的大小内删除一些元素。

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

排序和删除后

......

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

我希望这能澄清预期的需要。

由于

2 个答案:

答案 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 ));

如果向量的大小确实发生了变化,则必须删除旧条目并重新插入。