相关疑难解决方法(0)

关于在C++中将数组存储在std :: vector中的问题

我不清楚以下情况.

首先,这段代码编译得很好:

#include <vector>

typedef struct{
    int x1,x2,x3,x4;
}  ints;

typedef std::vector<ints> vec;

int main(){
    vec v;
    ints a = {0,1,2,3};
    v.push_back(a);
}
Run Code Online (Sandbox Code Playgroud)

以下代码几乎相同:

#include <vector>

typedef std::vector<int[4]> vec;

int main(){
    vec v;
    int a[4] = {0,1,2,3};
    v.push_back(a);
}
Run Code Online (Sandbox Code Playgroud)

但它会抛出我将在最后包含的极长的错误输出.为什么编译器对这两个程序的处理方式如此不同?这绝对不直观.

这是我的系统上使用g ++编译时抛出的编译器错误:

[mattg@pigott Test]$ g++ test2.cpp -o test2
In file included from /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/i586-redhat-linux/bits/c++allocator.h:34,
                 from /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/allocator.h:48,
                 from /usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/vector:62,
                 from test2.cpp:2:
/usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/ext/new_allocator.h: In member function ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const _Tp&) [with _Tp = int [4]]’:
/usr/lib/gcc/i586-redhat-linux/4.4.1/../../../../include/c++/4.4.1/bits/stl_vector.h:737:   instantiated from ‘void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction gcc g++ stdvector

6
推荐指数
3
解决办法
8789
查看次数

标签 统计

c++ ×1

compiler-construction ×1

g++ ×1

gcc ×1

stdvector ×1