【发布时间】:2014-09-27 04:16:01
【问题描述】:
我有一个关于在地图中用作键时如何处理指向自定义对象的指针的问题。更具体地说,如果我定义
std::map< CustomClass*, int > foo;
默认的 C++ 实现可以处理这些指针吗?还是我需要定义一个自定义比较器函数来处理它?一般来说,使用指向对象的指针作为键是一种好习惯吗?
【问题讨论】:
-
任何支持
less<T>的东西都可以在地图中使用。见stackoverflow.com/questions/1098966/… -
在映射中使用指针作为键的一个可能的缺点是项目的顺序是不确定的(取决于它们的内存地址)。如果您需要以确定的顺序迭代项目,则不能使用指针作为键。这在多人游戏中可能很重要。