如何解决打印 2D 向量的 std::queue
我正在尝试创建一个二维向量队列,并在每次推送向量时查看其中的内容。 我试图实现这一点并以在脑海中打印 2D 矢量的想法来打印它。我也在网上试过一些模板。
显然,它不适用于二维向量队列。我也不明白错误消息,因为我对 C++ 还是很陌生,所以我不知道如何解决这个问题或为什么不允许这样做。
这是我尝试过但不起作用的方法:
#include <iostream>
#include <vector>
#include <queue>
#include <string>
using namespace std;
int main()
{
vector<vector<char>> v = {{'a','b'},{'c','d'}};
queue<vector<vector<char>>> my_queue;
my_queue.push(v);
/*for (unsigned int i = 0; i < my_queue.size(); i++) {
cout << my_queue.front() << " ";
my_queue.pop();
}
cout << endl;*/
for (unsigned int i = 0; i < my_queue.size(); i++) {
for (unsigned int j = 0; j < my_queue[i].size(); j++) {
cout << my_queue.front() << " ";
my_queue.pop();
}
cout << endl;
}
return 0;
}
编辑
错误信息我不明白的部分是:
main.cpp:34:9: error: no match for ‘operator<<’ (operand types are ‘std::ostream {aka std::basic_ostream}’ and ‘__gnu_cxx::__alloc_traits > >>::value_type {aka std::vector >}’) cout << my_queue.front() << " ";
任何想法都会有所帮助。
编辑 2:解决方案
经过多次试验,我终于找到了一种方法,它对我的情况很有效:
void State::PrintQueue(queue<vector<vector<char>>> q){
if (q.empty()){
cout << "\n[Queue is empty!]" << endl;
return;
}
vector<vector<char>> x = q.front();
q.pop();
for (auto& row : x) {
for (auto& s : row) {
cout << s << ' ';
}
cout << endl;
}
cout << endl;
PrintQueue(q);
q.push(x);
}
然而!,这似乎不是很有效。
我也想知道有没有办法为此制作模板?我已经尝试了所有模板,但我对模板仍然非常缺乏经验。
解决方法
错误信息应该足够了..
错误:“operator[]”不匹配(操作数类型为“std::queue”和“int”)
没有 my_queue[x]
你需要做类似的事情
RatesOfAlcoholism[3]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。