【问题标题】:How to access elements of a pair set in C++如何在 C++ 中访问一对集合中的元素
【发布时间】:2016-03-07 02:09:05
【问题描述】:

我有一套。格式为set<pair<string,int> > stockSet 我想找出上面的集合是否有一个给定字符串的条目,它是第一个元素。 还要找到对的第二部分的值,即int,给定对的第一个元素string

我知道如何使用地图和单元素集来做到这一点。但我无法弄清楚如何做到这一点,需要语法方面的帮助。

【问题讨论】:

    标签: c++ set std-pair


    【解决方案1】:

    你想不通,因为你做不到。

    集合中的元素是“完整”元素。仅仅因为您在那里看到一个 std::pair,并且您认为该集合包含两个元素,但这并不意味着它是。该集合包含一个std::pair,一个完整的元素。

    如果您在某处有另一个std::pair,您可以搜索该集合以查看其中是否存在等效对。但是如果你只有集合包含的对象的一半,你真的做不到。

    我在这里看到的唯一选项是:

    • 手动遍历集合,直到找到或没有找到所需的内容。

    • 如果您希望其中有一个最小值int,您可以使用lower_bound(),传递一个std::pairint 部分的最小值,以及您的字符串搜索,看看lower_bound() 挖掘了什么。

    • 也许重新考虑您决定使用std::set 用于您使用的任何目的。也许包含std::pairstd::set 并不是真正适合您要求的容器。

    【讨论】:

    • 好的,我想我最好还是使用地图。但我需要另一个帮助。如果我创建一个元素为对的集合,并且我希望它根据第一个值进行排序。我怎样才能做到这一点?我的意思是如何指定必须根据第一个元素进行排序,因为默认设置是排序的。
    • @VasaviManasa - 只需为您的集合定义一个自定义比较器。
    猜你喜欢
    • 2014-01-04
    • 2020-02-21
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多