你能告诉我<pointer>这个地图类型中少做什么吗



我正在看别人写的一些代码,试图修复错误,并有这个类型定义

typedef map<RPacket *, CLocalLink *, less<RPacket *> > CPacketToLocalLinkMap;

我不确定less<RPacket *>在做什么

std::map类模板其第三个模板参数Compare是一个比较函数,用于对键进行排序。第三个参数Compare有一个默认参数std::less<Key>

我不知道这是怎么回事

因此,通过显式地写:
less<RPacket *>

你的明确地说这个less<RPacket *>应该被用作比较函数来排序键,而不是默认参数(在您的情况下与less<RPacket *>相同)。

std::less本身是一个类模板,用于执行比较,除非特化,否则在类型T上调用operator<

template< class T = void > struct less;    since C++14

如上所述,在您的情况下,不需要显式地传递less<RPacket*>作为第三个参数,因为它与默认参数相同。这意味着你可以这样写:

//---------------------------------v------------------------>no need for the third template argument
typedef map<RPacket *, CLocalLink * > CPacketToLocalLinkMap; //this is equivalent to what you wrote 

相关内容

  • 没有找到相关文章

最新更新