C++ 如何从队列c++;
如何在不使用C++ 如何从队列c++;,c++,C++,如何在不使用for循环的情况下从队列中获取前五个元素?为什么要这样做?也许你必须一次掌握5个元素,原因在这里不清楚 无论如何-如果您是指STL: std::queue<Element> container; Element e1, e2, e3, e3, e5; e1 = container.front(); container.pop(); e2 = container.front(); container.pop(); e3 = container.front(); cont
for
循环的情况下从队列中获取前五个元素?为什么要这样做?也许你必须一次掌握5个元素,原因在这里不清楚
无论如何-如果您是指STL
:
std::queue<Element> container;
Element e1, e2, e3, e3, e5;
e1 = container.front();
container.pop();
e2 = container.front();
container.pop();
e3 = container.front();
container.pop();
e4 = container.front();
container.pop();
e5 = container.front();
container.pop();
你为什么要这么做?也许你必须一次掌握5个元素,原因在这里不清楚 无论如何-如果您是指STL
:
std::queue<Element> container;
Element e1, e2, e3, e3, e5;
e1 = container.front();
container.pop();
e2 = container.front();
container.pop();
e3 = container.front();
container.pop();
e4 = container.front();
container.pop();
e5 = container.front();
container.pop();
#包括
#包括
int main(){
std::队列q;
对于(int i=0;i>s;
q、 推;
}
int itemsToFetch=5;
做{
std::string curString=q.front();
q、 pop();
std::cout#包括
#包括
int main(){
std::队列q;
对于(int i=0;i>s;
q、 推;
}
int itemsToFetch=5;
做{
std::string curString=q.front();
q、 pop();
std::cout根本没有显式循环:
#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));
}
#包括
#包括
#包括
#包括
模板
类排队器
{
公众:
QueuePopper(std::queue&q):q(q){}
T运算符()(常数T&){T T=q.front();q.pop();返回T;}
私人:
std::queue&q;
};
int main()
{
typedef std::字符串T;
std::队列q;
...
std::向量v(5);
std::transform(v.begin()、v.end()、v.begin()、QueuePopper(q));
}
完全没有显式循环:
#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));
}
#包括
#包括
#包括
#包括
模板
类排队器
{
公众:
QueuePopper(std::queue&q):q(q){}
T运算符()(常数T&){T T=q.front();q.pop();返回T;}
私人:
std::queue&q;
};
int main()
{
typedef std::字符串T;
std::队列q;
...
std::向量v(5);
std::transform(v.begin()、v.end()、v.begin()、QueuePopper(q));
}
还有一种方法:
template<int n> void GetElements(queue<string>& qu)
{
if(!qu.empty())
{
cout << qu.front() << '\n';
qu.pop();
}
GetElements<n-1>(qu);
}
template<> void GetElements<0>(queue<string>& qu) {}
// and call:
GetElements<5>(qu);
模板元素(队列和qu)
{
如果(!qu.empty())
{
cout还有一种方法:
template<int n> void GetElements(queue<string>& qu)
{
if(!qu.empty())
{
cout << qu.front() << '\n';
qu.pop();
}
GetElements<n-1>(qu);
}
template<> void GetElements<0>(queue<string>& qu) {}
// and call:
GetElements<5>(qu);
模板元素(队列和qu)
{
如果(!qu.empty())
{
不能使用while循环为什么不想在这里使用循环?当然是作业?还有什么会施加这样的限制…使用while循环为什么不想在这里使用循环?当然是作业?还有什么会施加这样的限制…该代码不起作用。声明e1
作为引用意味着您需要立即初始化它。我想你会想抄袭的。在流行音乐之后你指的是什么?@stefaanv-同意,但q中的要求似乎是人为的…该代码不起作用。声明e1
作为引用意味着您需要立即初始化它。我想您会想复制。在pop()之后您指的是什么?@stefaanv-同意,但q中的要求似乎是人为的……在这个解决方案中,隐藏的循环存在于transform
中,那么循环的边界隐藏在哪里?我可以将带有循环的函数导出到其他文件,这是相同的。@Svisstack:当然。这是人为的场景!但我还没有实际编写一个循环。在这个解决方案中,是隐藏的循环存在于变换中,那么循环的边界在哪里?我可以将带有循环的函数导出到其他文件,这是相同的。@Svisstack:当然。这是一个人工场景!但我不必实际编写循环。+1,因为每次看到它,我都会发现第二个构造是真的很聪明。+1,因为每次我看到它,我发现第二个构造真的很聪明。