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 中的枚举类型是不能直接输出的,需要进行类型转化
}
C++ enum
最新推荐文章于 2023-07-24 19:52:56 发布