std :: array作为另一个标准容器的元素类型?

时间:2015-11-02 10:00:26

标签: c++ stl visual-c++-2015

似乎没有针对它的任何规则,以及我得到的错误

std::vector< std::array<int,8> > output;
output.resize (8);

C2036 'std::array<int,0x08> *': unknown size

没有意义。 <vector>内的代码正在推进内部end指针,该指针在其他地方也被使用(因为扩展的计算大小)。 struct{int x[8];}的大小肯定是#34;已知&#34;。

这里发生了什么?

嗯,因为它不仅仅是一个简单的错字或其他类似的东西,并且在其他人尝试它时似乎工作正常(并且其他人写的样本为我工作!)我减少了源文件,直到什么都没有留下但违规的陈述仍然失败。这是整个文件。预编译的标头已关闭。

//#include <SDKDDKVer.h>

#include <vector>

int main()
{

    std::vector< std::array<int,8> > output;
    output.resize (16);

}

我正在使用x64构建,发布版本。

想出来:

vector不是#include,而是array! 它显然是在其他标题中向前声明但是不完整。

1 个答案:

答案 0 :(得分:5)

这段代码似乎一切正常。

#include <vector>
#include <array>

int main() {
    std::vector< std::array<int,8> > output;
    output.resize(8);
    return 0;
}

Ideone test example

您是否添加了#include <array>行?