map相关数据结构比较

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值