使用类类型作为映射key_value

时间:2010-06-23 14:35:43

标签: c++ stl

Data的变量可以用作地图键吗?

struct Data {
Data(int X, int Y) {x=X; y=Y;}
int x; int y;
}

int main()
{
   std::map<Data, int> map_;
   map_.insert(std::make_pair(Data(1,2), 0)); //error inserting
}

2 个答案:

答案 0 :(得分:7)

是的,但您需要为类类型定义operator<或使用std::map的自定义比较函数。

There is an example of using a custom comparison function in the STL documentation.

答案 1 :(得分:1)

如果您不想要运算符&lt;,则可以使用boost :: unordered_map。