指针和调整大小的C ++向量

时间:2015-01-11 07:20:31

标签: c++ pointers vector

关于指针向量的2个问题:

  1. 我试图理解这是做什么的:

     vector<int *> vecIntPtrs;  
     vecIntPtrs.push_back(new int[500]);
    
  2. 想到它会创建一个500行的新行,最大限度在vecIntPtrs [0] [499] ...但我测试了它,我可以存储/调用超过499的值。所以我试图概念化新的int []。 500代表什么尺寸?我如何稍后调整大小,我可以稍后执行类似vecIntPtrs [0] .resize(1000)的操作吗?

    编辑:好的,在这里回答:Accessing an array out of bounds gives no error, why?。基本上#1的答案是没有绑定检查,因此绑定之外的行为可能是也可能不是程序员想要的。怎么样#2?

    1. 我有一个包含许多行和元素的全局矢量容器。我想有一个指针向量,只指向第一个向量容器的特定行。说:

        vector<vector<int> > vecStorage;  //assume this is already populated to have many rows and elements   
        vector<int * > vecOfPtrs;  //only need 2 rows of int pointers  
        //not sure what code to have here
      
    2. 最后,我希望vecOfPtrs在vecStorage中包含2个特定行,例如vecStorage [2]和vecStorage [5]中的所有元素。有一个函数调用有一个参数,期望一个行为2的指针向量(一成不变,我无法触摸/修改它)。

          现在我正在做的是使用for循环,然后浏览vecStorage [2]和vecStorage [5]中的所有元素。有没有更简单的方法?比如只给出起始位置,就像vecStorage [2] [0]一样,每次vecOfPtrs改变它从vecStorage指向哪一行时都不必经过for循环?

0 个答案:

没有答案