2

我使用 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')"
4

1 回答 1

3

没有办法通过一个操作来做到这一点:Boost.MultiIndex 查找成员函数总是返回范围(或迭代器,可以被认为是一个元素范围),但是你描述的这样一个查询的结果不是一个范围--它的元素不一定是相邻的。所以你必须做两次查询,一次查询("Dress","Red"),一次查询("Dress","Yellow"),然后依次遍历两个结果范围。

于 2013-06-17T18:06:32.337 回答