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