首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试char[4]的一个DEQUE [4]

调试char[4]的一个DEQUE [4]
EN

Stack Overflow用户
提问于 2012-01-21 16:41:30
回答 3查看 430关注 0票数 0

在下面的代码中,我无法在deque中推送初始表,也不能将deque的前端赋值为x。

谁能告诉我怎么解决这个问题吗?

为了使这个程序工作,我应该使用什么代替char数组?

代码语言:javascript
复制
#include <iostream>
#include <deque>
using namespace std;

char x[4][4];
deque<char [4][4]> myStack;

char func(char initial[4][4])
{
     myStack.push_front(initial[4][4]); // ERROR1
     x[4][4]=myStack.front();            // ERROR2
}

试图编译上述内容会产生以下错误:

ERROR1:重载函数"std::deque<_Ty, _Ax>::push_front [with _Ty=char [4][4], _Ax=std::allocator<char [4][4]>]“的实例与参数列表不匹配

ERROR2:不能将"char (*)[4]“类型的值分配给"char”类型的实体

EN

回答 3

Stack Overflow用户

发布于 2012-01-21 16:43:49

不能将C样式数组存储在容器中。

票数 1
EN

Stack Overflow用户

发布于 2012-01-21 16:45:00

C样式数组不是C或C++中的头等公民。它们无法复制,因此不能将数组放入容器中。

一种可能的解决方案是将数组存储在结构中,然后将结构存储在deque中。另一个想法可以是使用std::string而不是char数组。

票数 1
EN

Stack Overflow用户

发布于 2012-01-21 16:53:56

在这里,您尝试使用数组的方式存在一些问题。

  1. 程序中的数组不是initial[4][4]x[4][4]。它们被称为x.
  2. Arrays,不能通过值传递到function.
  3. Arrays中,不能存储在标准容器中。

作为初始修复,您可以使用boost::array<boost::array<char, 4>, 4>类型;因为它是一个围绕数组的对象包装器,所以它可以工作。然而,我觉得在容器中存储多维数组可能是错误的;根据您的需求,您需要做其他的事情。不幸的是,我们不知道您的需求是什么,所以我不能提出具体的选择。

同时,调用deque myStack也非常令人困惑。堆栈是另一回事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8954703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档