【发布时间】:2021-03-03 13:59:25
【问题描述】:
在以下简化示例中:
struct SalesRecord
{
time_t date;
std::string department;
int sales_person_id;
int num_sales;
int total_num_sales;
};
typedef multi_index_container
<
SalesRecPtr,
indexed_by
<
ordered_unique // 0
<
composite_key
<
SalesRecPtr,
member <SalesRecord, time_t, &SalesRecord::date>,
member <SalesRecord, std::string, &SalesRecord::department>,
member <SalesRecord, int, &SalesRecord::sales_person_id>
>,
composite_key_compare
<
std::greater<time_t>,
std::less<std::string>,
std::less<int>
>
>,
ordered_unique // 1
<
composite_key
<
SalesRecPtr,
member <SalesRecord, std::string, &SalesRecord::department>,
member <SalesRecord, int, &SalesRecord::sales_person_id>,
member <SalesRecord, time_t, &SalesRecord::date>
>,
composite_key_compare
<
std::less<std::string>,
std::less<int>,
std::greater<time_t> // could also be std::less here
>
>
>
> SALES_RECORDS;
此 SALES_RECORDS 集合可能包含按每天进行至少一次销售的个人和部门的销售记录。部门“Dep1”的人“A”可能在日期 1、3、4、5、20 有销售;
问。如何从这个集合中获取一个范围,在第 4 天之后找到这个人(“A”)、部门(“Dep1”)的所有记录? 这可用于在更正特定日期的销售数量后更新销售总数。 目前,我正在检索一个人的 equal_range 并迭代到所需的日期,这给我的搜索增加了不希望的线性复杂性。
【问题讨论】: