我需要将一些间隔(实际上这些是地址间隔)映射到对象 ID。
我尝试使用boost的interval_map,这个例子看起来很漂亮,它很容易枚举所有的间隔,比如:
while(it != party.end())
{
interval<ptime>::type when = it->first;
// Who is at the party within the time interval 'when' ?
GuestSetT who = (*it++).second;
cout << when << ": " << who << endl;
}
哪个输出:
----- 派对嘉宾的历史 ------------- [2008-May-20 19:30:00, 2008-May-20 20:10:00): Harry Mary [2008-5-20 20:10:00,2008-5-20 22:15:00):戴安娜·哈里·玛丽·苏珊 [2008-May-20 22:15:00, 2008-May-20 23:00:00):戴安娜·哈里·玛丽·彼得·苏珊 [2008-May-20 23:00:00,2008-May-21 00:00:00):戴安娜·彼得·苏珊 [2008 年 5 月 21 日 00:00:00,2008 年 5 月 21 日 00:30:00):彼得
但它不能做这样的事情:
interval<ptime>::type when =
interval<ptime>::closed(
time_from_string("2008-05-20 22:00"),
time_from_string("2008-05-20 22:01"));
GuestSetT who = party[when];
cout << when << ": " << who << endl;
它输出:error: no match for 'operator[]' in 'party[when]' 它看起来很奇怪,因为 map 的主要功能在 operator[]
所以我无法获得“在特定时间参加聚会的人”的信息
这个问题有现成的解决方案吗?