使用boost::multi_index_container
来保留插入顺序,可以通过在容器中添加一个额外的索引来实现。这个索引可以是一个整数,表示元素的插入顺序。以下是一个简单的示例:
#include<boost/multi_index_container.hpp>
#include<boost/multi_index/ordered_index.hpp>
#include<boost/multi_index/identity.hpp>
#include<boost/multi_index/member.hpp>
#include<iostream>
#include<string>
using boost::multi_index_container;
using namespace boost::multi_index;
struct data {
int id;
std::string name;
};
typedef multi_index_container<
data,
indexed_by<
ordered_unique<member<data, int, &data::id>>,
ordered_non_unique<identity<data>>
>
> data_container;
int main() {
data_container dc;
dc.insert({1, "one"});
dc.insert({2, "two"});
dc.insert({3, "three"});
for (const auto& d : dc) {
std::cout << d.id << ": " << d.name<< std::endl;
}
return 0;
}
在这个示例中,我们定义了一个data
结构体,包含一个整数id
和一个字符串name
。然后我们定义了一个data_container
,它是一个multi_index_container
,包含data
结构体。我们使用了两个索引:一个按照id
排序,另一个按照插入顺序排序。
在main
函数中,我们向data_container
中插入了三个元素,然后遍历它们并打印它们的id
和name
。由于我们使用了插入顺序的索引,所以输出的结果将按照插入顺序排列。
这个示例可以作为保留插入顺序的基础,你可以根据自己的需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云