使用指针将指针转换为std :: set中STL set / delete元素中的迭代器

时间:2014-03-23 18:11:16

标签: c++ pointers stl iterator set

我有一个在堆上存储了很多(超过50k)double类型值的集合:

struct user {
  int id;
  double score;
}

set <user*, user_comparator_descending_score> USERS = new set ...

我也创建了一个

map<key, list of pointers to elements in the aforementioned set>

map<id, vector<user*> > = new map...

现在我想删除此地图中键所指向的元素。我会使用set::erase函数,但它只接受指向要擦除的元素的迭代器。使用delete(pointer)从集合中删除对象是否正确?我很不确定这是因为set不使用连续的内存。

我的问题的其他解决方案也将受到高度赞赏。我保持集合按值的降序排序。我需要在O(logN)中插入和删除。但请注意,删除不是通过集合中的值,而是通过其他键。

0 个答案:

没有答案