我有一套。它的形式是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 - 只需爲您的設置定義一個自定義比較器。 –