今天上百度回答一个关于stack push()的一些问题,由此次我也有些疑问。
#include"stack"
using namespace std;
int main()
{
int a[2][3];
stack<int [2][3]> v;
v.push(a);
return 0;
}
这样就会报错,他问的问题是如何改正。所以最简单的方法就是建立一个结构体struct x{ int a[2][3] }; 然后用这个结构体创建一个对象,然后传给push();
但是为什么直接push(a);就不行呢?
所以我找了一下stack的定义的文件
stack<>这个模板 在定义push方法的时候 是这样的 void push(const value_type& __x) { c.push_back(__x); }可以看到它的参数是 const 修饰,并且是引用类型
所以 在.push(a);的时候,a是一个二维指针,并不是int [2][3]的一个对象,
所以报错,但是还有许多需要调用.push()的文件中也会报错,这些错误具体就不知道了,要是理解错误 ,希望大神们给我指正。