【问题标题】:sort vectors in map对地图中的向量进行排序
【发布时间】:2011-06-06 14:55:24
【问题描述】:

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

示例:

map<int, vector<int> > 

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

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

排序和删除后...

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

我希望这能阐明预期的需求。

谢谢

【问题讨论】:

    标签: c++ vector maps containers


    【解决方案1】:

    映射是一个有序容器,顺序谓词应用于键

    例如你可以有一个std::map&lt;int, std::vector&lt;int&gt;, std::less&lt;int&gt; &gt;

    这里你的关键不是向量,因此你不能用你的地图做你正在寻找的事情。

    在这里,您可能想要一个std::map&lt;std::vector&lt;int&gt;, int, some_struct&gt;,其中some_struct 是一个函子,它定义了向量上的严格顺序关系。

    【讨论】:

    • @PAASTINO:请在您的原始帖子示例数据中显示您要存储的数据以及您将如何处理这些数据。否则很难提出任何相关的建议。
    【解决方案2】:

    只要向量的大小不变,你就可以做到:

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

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

    【讨论】:

    • @PAASTINO: amap.erase(amap.begin()) 将删除最短向量。也许你需要读一些关于 STL 的书。
    猜你喜欢
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多