在C ++中访问if循环范围之外的向量

时间:2016-12-02 15:04:41

标签: c++ vector

首先,我是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的向量

我发现很难相信这么简单的东西会变得如此麻烦。提前感谢任何建设性的提示。

1 个答案:

答案 0 :(得分:1)

这里有几件事。

最重要的是,你宣布的是生命。如果在{}内声明一个向量,它将无法在其外部使用。因此,如果您想在if if (t == 0)之外使用向量,则必须在if之外声明它,否则当您想要访问它时它将不再存在。

您可以在if之外声明它,只需在if时使用if初始化它。或者,如果您只是想在不知道大小的情况下添加元素,请使用 push_back

Vector类有很多有用的功能,在这种情况下会帮助你: http://en.cppreference.com/w/cpp/container/vector(在评论后改为cplusplus.com)