我有一套。它的格式为set<pair<string,int> > stockSet
我想找到上面的集合是否有一个作为第一个元素的给定字符串的条目。
同时要找到该对的第二部分的值,即int
给定该对的第一个元素string
。
我知道如何使用map和单个元素集来完成它。但我无法弄清楚如何做到这一点,需要语法帮助。
答案 0 :(得分:0)
你无法解决这个问题,因为你无法做到这一点。
集合中的元素是&#34;完成&#34;元素。只是因为你在那里看到一个std ::对,并且你认为该集合包含两个元素,它并不意味着它是。该集合包含std::pair
,一个完整的元素。
如果您在其他地方有另一个std::pair
,则可以搜索该集以查看其中是否存在等效对。但是,如果你只有该集合包含的对象的一半,那么你真的无法做到。
我在这里看到的唯一选择是:
手动迭代集合,直到您找到或未找到您正在寻找的内容。
如果您希望在那里获得最低int
值,则可以使用lower_bound()
,并传递std::pair
int
的最小值lower_bound()
1}}部分,以及您要搜索的字符串,并查看std::set
挖掘的内容。
或许会重新考虑您使用std::set
的决定,无论您使用何种目的。也许包含std::pair
的{{1}}并非真正适合您要求的容器。