std:地图的key有什么要求
std::map的key有什么要求?以前一直都只用过内置的std::string类型做map的key。现在由于某种原因,我需要使用
std::map的key有什么要求?
以前一直都只用过内置的std::string类型做map的key。现在由于某种原因,我需要使用自定类型做key。这个类型含有如下三个数据:一个string的名字,一个vector的3元数字矢量,一个4元数(可以看成是4个数的矢量)。这三个数据如果一样,表明是一个key。
class MyKey {
protected:
std::string name;
Ogre::Vector3 position;
Ogre::Quaternion orientation;
};
那么,vector的key需要哪些条件吗?要提供哪些操作符的重载?
[解决办法]有 operator<
[解决办法]能够有那个的弱序比较。也就是说能用<比较
[解决办法]至少要提供相等,比较大小的操作
[解决办法]完整的 要求就是
1 支持拷贝构造
2 支持operator=
3 operator< 如果没有operator<那么 map模板必须增加第三个模板参数
[解决办法]++
已经非常完整了。