c map需要使用多個鍵值如何編寫

2021-10-02 15:42:20 字數 1294 閱讀 8994

最近完成專案遇到乙個問題 map需要設計多個鍵值,也就是key-value的key希望是乙個結構體,裡面有好幾個元素:

網上查閱了資料(主要參考:解決方案如下:

主要就是需要設定一下 < 比較符的定義,因為只有乙個鍵值的時候是很好比較的,但使用結構體後,我們就需要考慮比較關係

我們使用bool operator<()函式來過載《運算子,具體的寫法有兩種,在樣例**中有所展示(這裡我寫的是優先比較年齡,之後再比較名字)。

樣例**:

//

// main.cpp

// table_test

//// created by qiucheng lin on 2020/2/5.

//#include #include #include#include#includestruct man,triple_score2 = ,triple_score3 = ;

man man1,man2,man3,man4;

man1.name = "lacy";

man1.age = 21;

man2.name = "lucy";

man2.age = 24;

man3.name = "james";

man3.age = 21;

//插入操作

infos.insert(std::map::value_type (man1, triple_score1));

infos.insert(std::map::value_type (man2, triple_score2));

infos.insert(std::map::value_type (man3, triple_score3));

//遍歷

for(std::map::iterator iter = infos.begin(); iter != infos.end(); ++iter)

man4.name = "lucy";

man4.age = 24;

//查詢

std::map::iterator iter2=infos.find(man2);

if(iter2==infos.end())

std::cout << iter2->second.score[0]<< std::endl;

std::cout << iter2->second.score[1]<< std::endl;

std::cout << iter2->second.score[2]<< std::endl;

return 0;

}

python遞迴需要使用self

在刷劍指offer的時候遇到合併鍊錶的題,使用python嘗試用遞迴方法來解,結果出現了global name merge is not defined的錯誤,原因是在遞迴呼叫的時候需要使用self.merge class listnode def init self,x self.val x se...

SQL Server到底需要使用哪些埠

sql server在安裝到伺服器上後,由於出於伺服器安全的需要,所以需要遮蔽掉所有不使用的埠,只開放必須使用的埠。下面就來介紹下sql server 2008中使用的埠有哪些 首先,最常用最常見的就是1433埠。這個是資料庫引擎的埠,如果我們要遠端連線資料庫引擎,那麼就需要開啟該埠。這個埠是可以修...

shell 指令碼 算術測試需要使用

bin bash 算術測試.結構可以用來計算並測試算術表示式的結果.退出狀態將會與 結構完全相反 0 echo exit status of 0 is 1 1 echo exit status of 1 is 0 5 4 真 echo exit status of 5 4 is 0 5 9 假 ec...