【发布时间】:2016-03-07 02:09:05
【问题描述】:
我有一套。格式为set<pair<string,int> > stockSet
我想找出上面的集合是否有一个给定字符串的条目,它是第一个元素。
还要找到对的第二部分的值,即int,给定对的第一个元素string。
我知道如何使用地图和单元素集来做到这一点。但我无法弄清楚如何做到这一点,需要语法方面的帮助。
【问题讨论】:
我有一套。格式为set<pair<string,int> > stockSet
我想找出上面的集合是否有一个给定字符串的条目,它是第一个元素。
还要找到对的第二部分的值,即int,给定对的第一个元素string。
我知道如何使用地图和单元素集来做到这一点。但我无法弄清楚如何做到这一点,需要语法方面的帮助。
【问题讨论】:
你想不通,因为你做不到。
集合中的元素是“完整”元素。仅仅因为您在那里看到一个 std::pair,并且您认为该集合包含两个元素,但这并不意味着它是。该集合包含一个std::pair,一个完整的元素。
如果您在某处有另一个std::pair,您可以搜索该集合以查看其中是否存在等效对。但是如果你只有集合包含的对象的一半,你真的做不到。
我在这里看到的唯一选项是:
手动遍历集合,直到找到或没有找到所需的内容。
如果您希望其中有一个最小值int,您可以使用lower_bound(),传递一个std::pair 和int 部分的最小值,以及您的字符串搜索,看看lower_bound() 挖掘了什么。
也许重新考虑您决定使用std::set 用于您使用的任何目的。也许包含std::pair 的std::set 并不是真正适合您要求的容器。
【讨论】: