C++ enum

https://blog.csdn.net/y109y/article/details/82912427

主要想描述的内容如下
1:参照上面的链接,明白map中key使用自定义数据时候,如何满足map对key的要求
   A:函数对象,重载operator()
   B: 利用std::function
   C: 自定义数据中 重载operator<()操作符
2:枚举,不能直接shiyong cout 进行输出
   A:类型转化 static_cast<int> 
   B: 重载ostream << 





enum class DATA_SOURCE_CLASS
{
	GPS = 10012,
	DEPTH,
	SPEED,
	ENVIRONMENT,
	Wind,
	Engine,
	TimeAndDate,
	AIS,
	DistanceLogs,
	Boat,
	Fuel,
	Navigation,
	Pilot,
	TideAndSalinity,
	Transmission,
	Pressures
};


struct CompareClass {
public:
	// 函数const限定修饰符一定不要丢,必须和less<Key> 模板类保持一致
	bool operator()(const DATA_SOURCE_CLASS& t1, const DATA_SOURCE_CLASS& t2) const {
		cout << "CompareClass is called" << endl;
		return static_cast<int>(t1) < static_cast<int>(t2);
	}
};


typedef std::map<DATA_SOURCE_CLASS, int, CompareClass > tptr_Map_DataClassification_t;

//typedef std::map<DATA_SOURCE_CLASS, int > tptr_Map_DataClassification_t;


定义函数对象
void testMapEnum()
{
	tptr_Map_DataClassification_t MapEnum;
	MapEnum.insert(make_pair((DATA_SOURCE_CLASS::GPS), 12));
	MapEnum.insert(make_pair((DATA_SOURCE_CLASS::DEPTH), 12));
	MapEnum.insert(make_pair((DATA_SOURCE_CLASS::SPEED), 12));
	for (auto it = MapEnum.begin(); it != MapEnum.end(); it++)
	{
		cout << "DATA_SOURCE_CLASS: " << static_cast<int>(it->first) << " DeviD = " << it->second << endl;
	}
	DATA_SOURCE_CLASS enumA = DATA_SOURCE_CLASS::AIS;
	//cout << enumA << endl;  C++11 中的枚举类型是不能直接输出的,需要进行类型转化

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家有工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值