关于指针向量的2个问题:
我试图理解这是做什么的:
vector<int *> vecIntPtrs;
vecIntPtrs.push_back(new int[500]);
我想到它会创建一个500行的新行,最大限度在vecIntPtrs [0] [499] ...但我测试了它,我可以存储/调用超过499的值。所以我试图概念化新的int []。 500代表什么尺寸?我如何稍后调整大小,我可以稍后执行类似vecIntPtrs [0] .resize(1000)的操作吗?
编辑:好的,在这里回答:Accessing an array out of bounds gives no error, why?。基本上#1的答案是没有绑定检查,因此绑定之外的行为可能是也可能不是程序员想要的。怎么样#2?
我有一个包含许多行和元素的全局矢量容器。我想有一个指针向量,只指向第一个向量容器的特定行。说:
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
最后,我希望vecOfPtrs在vecStorage中包含2个特定行,例如vecStorage [2]和vecStorage [5]中的所有元素。有一个函数调用有一个参数,期望一个行为2的指针向量(一成不变,我无法触摸/修改它)。
现在我正在做的是使用for循环,然后浏览vecStorage [2]和vecStorage [5]中的所有元素。有没有更简单的方法?比如只给出起始位置,就像vecStorage [2] [0]一样,每次vecOfPtrs改变它从vecStorage指向哪一行时都不必经过for循环?