c++ - smart - unique pointer
¿Cuál es el propósito de std:: set<VALUE, std:: owner_less<VALUE>>? (1)
Esto no tiene nada que ver con el operador de coma. Un set<T>
requiere que T
sea menos que comparable, es decir, el operator <
debe definirse para T
La razón para esto es que el conjunto mantiene sus elementos de una manera ordenada (a través de un tipo de árbol u otro). Puede suministrar un conjunto con un segundo argumento de plantilla, un functor que compara dos elementos para que el conjunto pueda usar esa comparación. std::owner_less
es una plantilla de predicado que opera en punteros compartidos y débiles y realiza pedidos basados en el propietario (en lugar de en valores).
Estoy tratando de diseccionar este ejemplo de websocket ++ https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp
En la línea 126, hay typedef std::set<connection_hdl,std::owner_less<connection_hdl>> con_list;
. Me pregunto por qué no es meramente typedef std::set<connection_hdl> con_list;
.
He leído cómo funciona el operador de coma y http://en.cppreference.com/w/cpp/memory/owner_less pero no estoy seguro de cuál es el propósito.
¿Qué se almacena realmente en el std::set
? ¿Qué hace std::owner_less
realidad? ¿Cuál es el propósito de hacer un contenedor con esta estructura en lugar de almacenar los connection_hdl
s?