0

我有一个结构:

struct user_context {
   struct user_id;
   struct user_name;
   struct user_address;

   boost::int64_t user_id() const;
   const std::string& user_name() const;
};

我想将boost.multiindex与三个索引一起使用:1)user_id,2)user_name,3)user_context 对象的地址

我不知道,如何为 user_context 类型的对象的地址编写密钥规范。

typedef std::shared_ptr<user_context> user_context_ptr;

typedef boost::multi_index::multi_index_container<
   user_context_ptr
   ,boost::multi_index::indexed_by<
       boost::multi_index::hashed_unique<
           boost::multi_index::tag<user_context::user_id>
          ,boost::multi_index::const_mem_fun<
              user_context
             ,boost::int64_t
             ,&user_context::user_id
           >
       >,
       boost::multi_index::hashed_unique<
          boost::multi_index::tag<user_context::user_name>
             ,boost::multi_index::const_mem_fun<
                 user_context
                ,const std::string&
                ,&user_context::user_name
             >
        >,
        boost::multi_index::hashed_unique<
           boost::multi_index::tag<user_context::user_address>
              ,boost::multi_index:: ??? <                      // <<<
                  user_context
                 ,user_context* (???)                          // <<<
                 ,???                                          // <<<
              >
          >
     >
> users_container;

谢谢。

4

1 回答 1

3

使用boost::multi_index::identity<user_context_ptr>:如果两个共享指针指向同一个对象,则它们是等效的(就像常规指针一样。)

于 2013-07-11T10:52:01.463 回答