我有一套。它的形式是set<pair<string,int> > stockSet
我想找到如果上面的集合有一个给定字符串的条目是第一个元素。 同样要找到该对的第二部分的值,即int
给出该对的第一个元素,即string
。如何访问在C++中设置的对的元素
我知道如何做到这一点与地图和单个元素集。但我无法弄清楚如何做到这一点,需要语法帮助。
我有一套。它的形式是set<pair<string,int> > stockSet
我想找到如果上面的集合有一个给定字符串的条目是第一个元素。 同样要找到该对的第二部分的值,即int
给出该对的第一个元素,即string
。如何访问在C++中设置的对的元素
我知道如何做到这一点与地图和单个元素集。但我无法弄清楚如何做到这一点,需要语法帮助。
你不能弄明白,因为你不能这样做。
集合中的元素是“完整”元素。仅仅因为你在那里看到一个std :: pair,并且你认为这个集合包含两个元素,并不意味着它是。该集合包含一个std::pair
,一个单一的完整元素。
如果您有另一个std::pair
,在某个地方,您可以搜索该设备以查看该设备是否存在等效配对。但是,如果你只有该集合包含的一半对象,那么你真的不能这样做。
我在这里看到的唯一选项是:
遍历集手动,直到你做什么或没有找到您要查找的内容。
如果有一个最低int
价值,你想到会在那里,你可以使用lower_bound()
,传递std::pair
与最小值为int
部分,而你的字符串搜索,看看有什么lower_bound()
扒。
或许您会重新考虑您决定使用std::set
作为您使用的任何目的。也许std::set
,包含std::pair
,不是真正适合您需求的容器。
好的,我想我最好使用地图。但我需要一个其他的帮助。如果我创建一个元素作为pair的集合,并且我希望它根据第一个值进行排序。我怎样才能做到这一点?我的意思是如何指定排序必须基于第一个元素完成,因为默认设置是排序的。 –
@VasaviManasa - 只需为您的设置定义一个自定义比较器。 –