std::set<VALUE, std::owner_less>的目的是什么<VALUE>?



我正在尝试剖析这个websocket++示例https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcastrongerver/broadcastrongerver.cpp

第126行是typedef std::set<connection_hdl,std::owner_less<connection_hdl>> con_list;。我想知道为什么不只是typedef std::set<connection_hdl> con_list;

我读过逗号操作符是如何工作的http://en.cppreference.com/w/cpp/memory/owner_less,但我不确定目的是什么。

std::set中实际存储的是什么?std::owner_less实际上是做什么的?用这种结构制作容器而不是存储connection_hdl本身的目的是什么?

这与逗号操作符无关。set<T>要求T小于可比,即operator <应该为T定义。这样做的原因是集合以一种有序的方式(通过一种树或另一种树)保持其元素。可以为set提供第二个模板实参——一个比较两个元素的函子,以便set可以使用该比较。std::owner_less是一个谓词模板,它操作共享指针和弱指针,并执行基于所有者(而不是基于值)的排序。

相关内容

最新更新