1. 程式人生 > >【基礎】結構體重載,用 char*作為std::map中的key

【基礎】結構體重載,用 char*作為std::map中的key

重載 http 註意 urn .net 參考 article 添加 無法

結構體重載

C++中,結構體是無法進行==,>,<,>=,<=,!=這些操作的,這也帶來了很多不方便的地方,尤其是在使用STL容器的時候,如果我們可以往語句中傳入結構體,一些事情將會變得很簡單。
bool operator 運算符 (const 結構體名稱 b) const
{
    return(什麽時候這個運算符對結構體成立);//註意對此運算符使用this->元素名;
}

用 char*作為std::map中的key

首先為什麽要用 char*作為std::map中的key

map<char*,int>和map<string,int>在插入和存儲效率的對比。 插入100000條 查詢100000次
map<string,int> 119ms 89ms map<char*,int> 9ms 6ms 聲明map時需要添加一個cmp比較函數,不然map在比較時,使用char *的指針進行比較,而不是比較char字符串。
#include <cstring>

struct cmp_str
{
    bool operator
()(char const *a, char const *b) { return std::strcmp(a, b) < 0; } }; int main ( int argc, char ** argv ) { std::map<const char*, int, cmp_str> map; map["aa"] = 1; map["ca"] = 2; map["ea"] = 3; map["ba"] = 4; map["ba"] = 5; map[
"bb"] = 6; map["ba"] = 7; std::map<const char*, int, cmp_str>::iterator it = map.begin(); for (; it != map.end(); it++ ) { std::cout << (*it).first << ": " << (*it).second << std::endl; } return 0; }

參考博客:
用 char*作為std::map中的key

map<char*,int>和map<string,int>的效率對比?

【基礎】結構體重載,用 char*作為std::map中的key