在 map 中对向量进行排序

3
如何基于向量大小对 map 中的向量进行排序?
示例:
map<int, vector<int> > 

根据向量大小排序以便稍后删除较小的元素。

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

排序并删除后...

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

希望这能澄清所需内容。

谢谢

2个回答

2

地图是一种有序的容器,其中键应用排序谓词

例如,您可以使用std::map<int, std::vector<int>, std::less<int> >

在这里,您的键不是向量,因此无法通过地图来实现您想要的功能。

在这里,也许您需要一个std::map<std::vector<int>, int, some_struct>,其中some_struct是一个函数对象,定义了向量上的严格排序关系。


@PALASTINO:请在您的原始帖子中展示您想要存储的样本数据以及您将要对数据进行的操作。否则很难建议任何相关内容。 - Benoit

0
你可以做到,前提是向量的大小不变:
map <int, vector<int> > amap;
vector <int> v;
v.push_back( 42 );
amap.insert( make_pair( v.size(), v ));

如果向量的大小发生变化,您将需要删除旧条目并重新插入。

@PALASTINO:amap.erase(amap.begin())将删除最短的向量。也许您需要阅读一些关于STL的书籍。 - Benoit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接