如何从队列c ++中获取前5个元素

cje*_*cje 1 c++

如何在不使用for循环的情况下从队列中获取前五个元素?

Oli*_*rth 5

根本没有明确的循环:

#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>

template <typename T>
class QueuePopper
{
public:
    QueuePopper(std::queue<T> &q) : q(q) {}
    T operator() (const T &) { T t = q.front(); q.pop(); return t; }
private:
    std::queue<T> &q;
};

int main()
{
    typedef std::string T;

    std::queue<T> q;

    ...

    std::vector<T> v(5);
    std::transform(v.begin(), v.end(), v.begin(), QueuePopper<T>(q));
}
Run Code Online (Sandbox Code Playgroud)