想要声明一个向量数组

时间:2014-12-17 00:29:26

标签: c++ arrays vector

由于一些遗留代码,我需要声明一个向量数组。我试过了:

vector< foo> a[numvecs];  

然后分配矢量:

a[i]=vector<foo>(foosize);  

但我似乎无法正确访问或写入内部向量

afile.read((char *)&a[i][0],foosize*sizeof(foo))

导致段错误

我声明了一个矢量矢量,但是外部矢量是一个固定的大小,非常小(通常是1到3),也是由于写入了代码的方式。另外,当我这样做并尝试在向量中打印任何内容时,我会遇到关于类型不匹配的编译器错误,任何线索?

2 个答案:

答案 0 :(得分:0)

假设numvecs是编译时常量(或编译器扩展),您至少可以更改此行:

a[i]=vector<foo>(foosize);  

到这条简化的行:

a[i].resize(foosize);  

如果已正确分配,您显示的访问vector的内容应该可以正常工作。我建议使用括号来帮助编译器知道你想要它做什么,但是:

afile.read(reinterpret_cast<char*>(&(a[i])[0]), foosize*sizeof(foo));

甚至使用引用使其更易于阅读:

vector<foo> &vec = a[i];
afile.read(reinterpret_cast<char*>(&vec[0]), foosize*sizeof(foo));

答案 1 :(得分:0)

vector <vector <foo> > a;

a.resize(<size>);
for(int =0; i < a.size(); i++) {
    a[i].resize(<size>);
}

我认为这应该有用