いくつかの間隔 (実際にはこれらはアドレスの間隔です) をオブジェクト ID にマップする必要があります。
ブーストの 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 年 5 月 20 日 19:30:00、2008 年 5 月 20 日 20:10:00): ハリー メアリー [2008 年 5 月 20 日 20:10:00、2008 年 5 月 20 日 22:15:00): ダイアナ ハリー メアリー スーザン [2008 年 5 月 20 日 22:15:00、2008 年 5 月 20 日 23:00:00): ダイアナ ハリー メアリー ピーター スーザン [2008 年 5 月 20 日 23:00:00、2008 年 5 月 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[] にあるので、奇妙に見えます
そのため、「特定の時間に誰がパーティーにいたか」という情報を取得できません
この問題に対してすぐに使用できるソリューションはありますか?