[英]std::copy for copying vector to priority_queue
我正在尝试将std::vector
复制到std::priority_queue
而以下两种方法正在工作。
vector<int> parts = { 8, 4, 6, 12, 57, 28}; //source
priority_queue<int, vector<int>, greater<int>> minHeap; //target
方法1:
all_of(parts.begin(), parts.end(), [&minHeap](int& part){minHeap.push(part); return true;});
方法2:
for(int& part: parts) minHeap.push(part);
但是,我想知道std::copy
是否可以这样做?
是的,可以使用std::copy()
来完成,但前提是您编写(或找到)一个自定义OutputIterator
,该自定义 OutputIterator 在写入迭代器时调用队列的push()
方法。 标准库没有用于调用push()
的内置迭代器(但它具有用于push_front()
的std::front_insert_iterator
、用于push_back()
的std::back_insert_iterator
、用于insert()
的std::insert_iterator
等)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.