2010-06-15 107 views
1

我已经在网上搜索了它,但我没有得到满意的结果。如何使用“矢量矢量”?

我想创造这样

vector< vector<int*> > test_vector; 

如何填写载体这个载体?如何访问它的成员?也许有人知道网上的一些很好的教程?

亲切的问候 MIKEY

+5

我肯定不会使用int *作为你的向量的内容。如果你要存储数字,只需使用int(或double/float/...)。指针的使用使得当你的矢量被破坏时你必须删除它们中的每一个。否则,你会得到一个内存泄漏。 – rubenvb 2010-06-15 17:59:14

+0

请参阅:http://stackoverflow.com/questions/823562/multi-dimensional-vector – Shog9 2010-06-15 18:06:07

+0

我知道你的关注,但上面的代码片段只是一个示范。实际上,我必须处理指向对象的指针。 – 2010-06-15 21:33:11

回答

3

只要记住的test_vector每个元素都是vector<int*>类型。填写每个元素向量即可填写test_vector

您可以像访问任何多维数组一样访问它。请参阅:

int *p = test_vector[0][0]; 

或者:

int *p = test_vector.at(0).at(0); 
+0

谢谢!我重新考虑了这个问题,并且为了编写一些测试程序,这些测试程序帮助我理解! – 2010-06-16 17:29:53

1

PS 如果你想使用某种类型的矩阵,我宁愿只使用一维矢量地图(因为性能)的访问。

例如矩阵M具有m行和n列:可以映射调用

M [i] [j] = x至M [我* N + j]的= X。

+1

这假设OP希望每个内部矢量具有相同的尺寸......这可能不是当前的问题。 – andand 2010-06-15 18:09:39

+0

因此,我在我的答案中使用矩阵。 – LonliLokli 2010-06-15 21:24:37

1

通过在其中放入载体来填充矢量矢量。

您以与其他矢量相同的方式访问其成员。