我有priority_queue。我的函数删除在内存消耗和时间方面不是很合理。 我见过类似的主题,但他们没有帮助我。
How to remove element not at top from priority_queue?
STL Priority Queue - deleting an item
如何删除log(n)上的元素。
我的功能:
void deleteFromTimeQueue(const K& key)
{
std::priority_queue<Record<K>, std::vector<Record<K>>, Comparator<K>> tmpTimeQueue_;
while (timeQueue_.size() > 0)
{
Record<K> it = timeQueue_.top();
if (it.getKey() == key)
{
timeQueue_.pop();
break;
}
tmpTimeQueue_.push(it);
timeQueue_.pop();
}
while (tmpTimeQueue_.size() > 0)
{
Record<K> it = tmpTimeQueue_.top();
timeQueue_.push(it);
tmpTimeQueue_.pop();
}
}
我如何删除 tmpTimeQueue _ ?
中的元素void deleteFromTimeQueue(const K& key)
{
std::priority_queue<Record<K>, std::vector<Record<K>>, Comparator<K>> tmpTimeQueue_;
while (timeQueue_.size() > 0)
{
Record<K> it = timeQueue_.top();
if (it.getKey() == key)
{
timeQueue_.pop();
continue;
}
tmpTimeQueue_.push(it);
timeQueue_.pop();
}
timeQueue_.swap(tmpTimeQueue_);
}
什么数字更好1或2?
答案 0 :(得分:1)
使用LINK-LIST实现优先级队列可能是一个很好的理想选择。通过这种方式,您可以搜索元素并将其删除为普通链接列表。希望这对你有所帮助。