Wal*_*ter 5 c++ arrays stdvector
以下代码不能用gcc 4.7.0编译(使用std = c ++ 11 -O3)
int n;
std::vector< int[4] > A;
A.resize(n);
Run Code Online (Sandbox Code Playgroud)
错误消息是长度,但最终
functional cast to array type ‘_ValueType {aka int[4]}‘
Run Code Online (Sandbox Code Playgroud)
它是否正确?还是应该编译?更重要的是,如何避免这个问题?(没有定义一个新的结构来保存int[4])
编辑:
如何用C++ 98解决问题?
您无法将数组存储在向量或任何其他容器中.要存储在容器中的元素类型(称为容器的值类型)必须是可复制构造和可分配的.数组都不是.
但是,您可以使用数组类模板,如Boost,TR1和C++ 0x提供的模板类:
std::vector<std::array<type, size> >
Run Code Online (Sandbox Code Playgroud)
(您将要使用std :: tr1 :: array替换std :: array以使用C++ TR1中包含的模板,或者使用boost :: array来使用Boost库中的模板.或者,您可以编写自己的模板;这很简单.)
@source作者:James McNellis
所以代码看起来像:
int n;
std::vector<std::array<int,3>> A;
A.resize(n);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2171 次 |
| 最近记录: |