【发布时间】:2021-08-25 19:09:25
【问题描述】:
我正在尝试将std::vector 复制到std::priority_queue,而以下两种方法正在运行。
vector<int> parts = { 8, 4, 6, 12, 57, 28}; //source
priority_queue<int, vector<int>, greater<int>> minHeap; //target
方法一:
all_of(parts.begin(), parts.end(), [&minHeap](int& part){minHeap.push(part); return true;});
方法2:
for(int& part: parts) minHeap.push(part);
不过,我想知道std::copy是否也能做到这一点?
【问题讨论】:
-
为什么不使用构造函数呢?
priority_queue<int, vector<int>, greater<int>> minHeap(parts.begin(), parts.end());? -
令人惊讶的是我没有想到构造函数。谢谢你启发我。
-
std::all_of()不适用于这项工作 - 它旨在检查条件是否适用于所有元素。它可能对你有用,但会让读者感到困惑。如果你想要一个算法,请使用std::for_each()- 但在这种情况下它并不比for循环更好。 -
@Eugene 是的,我知道这是一个调整。
标签: c++ vector stl priority-queue