map相关数据结构比较

   日期:2020-09-14     浏览:215    评论:0    
核心提示:1、map 红黑书 ,如果结构体key 重载的话,需要重载 < 操作符2、unordered_map 基于hash ,如果 key 作为结构体,需要重载 == 操作符,并且重写hash函数struct ST{string strClass;string strNO;ST(const string& cs, const string&no):strClass(cs), strNO(no){}bool operator < (const ST& st)

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

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服