我们可以在STL映射中使用用户定义的类作为键吗?

sky*_*oor 3 c++ stl

我需要地图中的一个键,但是,我发现它应该是多个数据.我可以将这些数据放在一个用户定义的类中,并将整个类作为键放在地图中吗?

它会影响时间效率吗?

这里应该应用哪些其他问题?

Mik*_*our 6

任何类型都可以用作密钥,只要它是

  • 可复制
  • 可分配
  • 可比,因为地图按键排序

如果你的类只是一个简单的结构,那么它已经可以复制和分配.要使类具有可比性,您必须实现operator<或创建具有自定义比较函数的映射才能使用.

对时间效率的唯一影响来自较大的对象需要更长的时间来复制和比较.如果对象需要那么大,那么你无能为力,所以不用担心.

  • 您还可以为该类型专门化`std :: less`. (2认同)