首先,我是C ++的新手,并且非常习惯于在MatLAB中工作。我的代码可能希望让经验丰富的C ++用户面对我,但看起来像这样:
编辑:我编辑了很多代码片段。以下是我正在努力完成的一个清理的通用示例。int main()
{
int t = 0;
vector<int> Pad_Ref_Vec; //initialize vector. Required size unknown
for (int n = 0; n <= 10; n++)
{
if (t == 0)
{
vector<int> Pad_Ref_Vec(100); //at this point in the code, i know the size i need this vector to be
for (int i = 0; i < 100; i++)
{
Pad_Ref_Vec[i] = i;
}
}
else
{
//do some operation using the values of Pad_Ref_Vec created in the above
//if statement
}
t++;
}
return 0;
}
如果我这样做,向量Pad_Ref_Vec在if语句之后不会读取[0 1 2 3 4 5 ... ...],而是回到之前的形式(在{{1之后的第一次初始化之后)这是一个大小为0的向量
我发现很难相信这么简单的东西会变得如此麻烦。提前感谢任何建设性的提示。
答案 0 :(得分:1)
这里有几件事。
最重要的是,你宣布的是生命。如果在{}内声明一个向量,它将无法在其外部使用。因此,如果您想在if if (t == 0)
之外使用向量,则必须在if之外声明它,否则当您想要访问它时它将不再存在。
您可以在if之外声明它,只需在if时使用if初始化它。或者,如果您只是想在不知道大小的情况下添加元素,请使用
push_back
Vector类有很多有用的功能,在这种情况下会帮助你: http://en.cppreference.com/w/cpp/container/vector(在评论后改为cplusplus.com)