1、map 紅黑書 ,如果key 是結構體的話,需要多載 < 和 == 運算子 ,時間復雜度為o(n) ,會排序
https://blog.csdn.net/fcku_88/article/details/88135150
https://blog.csdn.net/henu_jizhideqingwa/article/details/80994913
2、unordered_map 基于hash ,如果 key 作為結構體,需要多載 == 運算子,并且重寫hash函式,時間復雜度為o(1) ,占用空間多 ,順序會被打亂
3、OrderedMap ,基于 std::deque ,嚴格按照讀入順序生成
/// For documentation, see https://tessil.github.io/ordered-map/
struct ST
{
string strClass;
string strNO;
ST(const string& cs, const string&no)
:strClass(cs), strNO(no)
{
}
bool operator < (const ST& st) const
{
if (strClass < st.strClass)
{
return true;
}
else if (strClass == st.strClass)
{
return strNO < st.strNO;
}
else
{
return false;
}
}
};
ostream & operator<<(ostream &out, const ST &st)
{
out << st.strClass << "->" << st.strNO;
return out;
}
int main()
{
std::map<ST, int> s1 ;
s1[ST("A1", "002")] = 100;
s1[ST("A1", "001")] = 50;
s1[ST("A2", "001")] = 100;
for (const auto& st : s1)
{
std::cout << st.first << " :" << st.second << "\r\n";
}
}
運行結果如下:
unordermap 見方法二、三
https://blog.csdn.net/y109y/article/details/82669620
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/28771.html
標籤:其他
