其定义如下:
typedef boost::multi_index_container<
X, // the data type stored
boost::multi_index::indexed_by<
boost::multi_index::hashed_unique<
boost::multi_index::composite_key<
X,
boost::multi_index::member<X,std::string,&X::name>,
boost::multi_index::member<X,std::string,&X::p1>,
boost::multi_index::member<X,std::string,&X::p2>
>
>
>
> container;
我使用insert()插入新项目。
但是容器用字符串键对它们进行排序,而不是存储插入顺序。
我需要存储它。
答案 0 :(得分:1)
您需要为您希望能够搜索的每个订单的定义添加索引。
boost::multi_index::sequenced
为std::list
提供了类似访问权限
boost::multi_index::random_access
为std::vector
提供了类似访问权限
另请注意,您定义的container
不会以任何特定顺序保留内容,它std::unordered_set
只能访问它的唯一索引。
boost::multi_index_container<
X, // the data type stored
boost::multi_index::indexed_by<
boost::multi_index::random_access,
boost::multi_index::hashed_unique<
boost::multi_index::composite_key<
X,
boost::multi_index::member<X,std::string,&X::name>,
boost::multi_index::member<X,std::string,&X::p1>,
boost::multi_index::member<X,std::string,&X::p2>
>
>
>
> container;
container.index<0>().erase(container.index<0>().begin() + 10) // insertion order
container.index<1>().find(some_value) // unordered