私はこのクラスを持っています。
class event_t {
public:
event_t(String *_session_time, String *_event_type, String *_table_name, String *_num_of_events);
~event_t();
char *table_name;
char *event_type;
pthread_mutex_t lock;
pthread_cond_t cond;
int num_of_events_threshold;
double time_out;
int num_of_events_so_far;
};
次に、stl::map があります。
std::map <char*, std::list<event_t*>, cmp_str > all_events;
同じ table_name と event_type に対して単一のエントリを保持したい。新しいリクエストが発生するたびに、古いイベントが同じ table_name と event_type を持ち、std::list に存在する場合、古いイベントを削除したいと考えています。しかし、この古いイベント オブジェクトを削除すると、たまたま同じ char* table_name であるマップのキーも削除されます。
私のマッピングは次のようなものです:
map[event_t->table_name] = stl::list<event_t>