gpt4 book ai didi

c++ - C++ std::vector of array 的编译器错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:58:06 26 4
gpt4 key购买 nike

以下代码不能用 gcc 4.7.0 编译(使用 std=c++11 -O3)

int n;
std::vector< int[4] > A;
A.resize(n);

错误信息是长度,但最终

functional cast to array type ‘_ValueType {aka int[4]}‘

这是正确的吗?还是应该编译?更重要的是,如何避免这个问题? (没有定义一个新的结构来保存 int[4])

编辑:

如何解决C++98的问题?

最佳答案

您不能将数组存储在 vector 或任何其他容器中。要存储在容器中的元素类型(称为容器的值类型)必须是可复制构造和可赋值的。数组两者都不是。

但是,您可以使用数组类模板,例如 Boost、TR1 和 C++0x 提供的模板:

std::vector<std::array<type, size> >

(您需要将 std::array 替换为 std::tr1::array 以使用 C++ TR1 中包含的模板,或将 boost::array 替换为使用 Boost libraries 中的模板。或者,您可以自己写;这很简单。)

@source作者:詹姆斯·麦克内利斯

所以代码看起来像这样:

int n;
std::vector<std::array<int,3>> A;
A.resize(n);

关于c++ - C++ std::vector of array 的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12184828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com