需要从std::map<unsigned int, SomeNullPointer*>
多个键中删除。
在此操作之前,我们会从sqlite数据库接收密钥,并将其存储在其他std::map
或std::list
或任何其他std
容器中。
我们不允许在从数据库接收后立即erase
,因为执行SELECT
时数据库有不必要的忙时间,并且第一个map
的互斥锁有额外的锁定时间
因此,建议使用另一个map
map
(或其他容器)中删除密钥的最佳方法
答案 0 :(得分:1)
我想你可以在std::vector<unsigned int>
中存储临时密钥,因为它们纯粹用作顺序数据。
从数据库接收所有密钥并将其存储在std::vector<unsigned int>
后,对其进行迭代并从std::map<unsigned int, SomeNullPointer*>
中删除。
像:
std::map<unsigned int, SomeNullPointer*> data;
// suppose you have many data
std::vector<unsigned int> tempKeys;
// receive keys from database...
// make sure you have received all the keys from database,
// maybe after some signal sent from database?
然后你做
for (auto key : tempKeys)
{
data.erase(key);
}
或者你的指针可能需要删除:
for (auto key : tempKeys)
{
auto it = data.find(key);
delete (it->second);
data.erase(it);
}