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模板必须增加第三个模板参数
[解决办法]
++
已经非常完整了。