在boost :: multi_index中的Sql IN analog

时间:2013-06-17 14:00:44

标签: c++ boost boost-multi-index multi-index

我使用boost :: multi_index并检索如下数据:

sample_set::index<my_indx>::type::iterator s, end;
boost::tie(s,end) = samples.get<my_indx>().equal_range(
    boost::make_tuple( "Dress", "Red" ));

此代码检索所有红色连衣裙。有没有办法用一个查询检索红色和黄色连衣裙?就像在SQL中一样:

"Select * from clothes where type = 'Dress' and color in ('Red', 'Yellow')"

1 个答案:

答案 0 :(得分:3)

单一操作无法做到这一点:Boost.MultiIndex查找成员函数总是返回范围(或迭代器,可以认为是单元素范围),但结果是您描述的此类查询不是范围 - 元素不一定相邻。所以你必须做两个查询,一个用于(“Dress”,“Red”)和一个用于(“Dress”,“Yellow”),然后按顺序遍历两个结果范围。