我有一个问题,在映射中用作键时如何处理指向自定义对象的指针。更具体地说,如果我定义
std::map< CustomClass*, int > foo;
默认的C ++实现是否可以处理这些指针?还是我需要定义一个自定义比较器函数来处理它?通常,将对象的指针用作键是否是一种好习惯?
默认实现将比较指针存储的地址,因此不同的对象将被视为不同的键。但是,将不考虑对象的逻辑状态。例如,如果您将其std::string *
用作键,则std::string
具有相同文本的两个不同对象"Hello"
将被视为不同的键!(按地址存储在地图中)
只要您了解上述重要区别,就可以将指针用作键。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句