6

このwebsocket ++の例を分析しようとしています https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp

126 行目に がありtypedef std::set<connection_hdl,std::owner_less<connection_hdl>> con_list;ます。なぜそれだけではないのか不思議ですtypedef std::set<connection_hdl> con_list;

How does the Comma Operator workhttp://en.cppreference.com/w/cpp/memory/owner_lessを読みましたが、目的がわかりません。

に実際に格納されているものは何std::setですか? 実際には何をしstd::owner_lessますか?connection_hdls 自体を格納する代わりに、この構造を持つコンテナーを作成する目的は何ですか?

4

1 に答える 1

8

これはコンマ演算子とは関係ありません。Aは が同等以下であることset<T>を要求します。つまり、に対して定義する必要があります。この理由は、セットが (ある種のツリーまたは別の種類のツリーを介して) 順序付けられた方法で要素を保持するためです。セットに 2 番目のテンプレート引数 (2 つの要素を比較して、セットがその比較を使用できるようにするファンクター) を指定できます。は、共有ポインターと弱いポインターで動作し、(値ベースではなく) 所有者ベースの順序付けを実行する述語テンプレートです。Toperator <Tstd::owner_less

于 2013-03-29T21:43:45.643 に答える