0

我正在尝试将对象存储在boost multi-index容器中。

这些对象都是唯一的,可以通过 2 个单独的键(也是唯一的)检索。

namepsace bm = boost::multi_index;

class MyObj {
 string  strid_;
 int32_t numid_;
};

//! associative container searchable by ClOrdId and Sunofia Id.  
typedef boost::multi_index_container< MyObj,
bm::indexed_by<
  bm::ordered_unique<
    bm::member<MyObj,string,&MyObj::strid_>
  >,
  bm::ordered_unique<
    bm::member<MyObj,int32,&MyObj::numid_>
  >
>            
> Cntr;
Cntr cntr_;   

当我尝试通过整数查找该索引的任何元素时,我使用以下代码

 int32_t to_find = 12;
 Cntr::iterator it = cntr_.find(id);

但它没有编译,我收到以下错误

error: invalid conversion from ‘int’ to ‘const char*’

当我对字符串使用相同的代码时,它可以正常工作;你知道我做错了什么吗?

4

1 回答 1

2
auto it = cntr_.get<1>().find(id);

每个索引都可以单独访问(通过get),并有自己的成员函数、迭代器等。(如果您不能使用autoit则属于 类型。)有关文档教程Cntr::nth_index<1>::type::iterator的更多信息。

于 2014-07-22T08:08:13.533 回答