2013-05-02 98 views
0

基本问题你能帮我理解如何使用矢量矢量。以vector< vector<int> > help为例。我不明白它是否是一个整数矢量,每个矢量是一个整数矢量,还是它是一个整数矢量矢量?我也不明白如何使用它。矢量的矢量麻烦

示例代码

vector< vector<int> > test[500]; 
test[0].emplace_back(1); 
cout << test[0][0]; 
test[50].emplace_back(4); 
cout << " " <<test[50][0]; 

-console- 
1 50 //this is not what happens btw, but it is the desired results 

免责声明我花了一上午的测试中更好的一部分和谷歌搜索这一点。请帮助:)我做了我的硬件。我找不到任何矢量矢量的文档。此外,我有所有正确的库,我正在使用命名空间标准。我是一个noob,我明白,命名空间是不好的做法,但它现在非常适合我。

基本上我想要的是一个向量的集合大小,每个向量都是int的向量。我宁愿不去一个单独的班级的方式。 int是一个向量,是正确的东西要看?

谢谢:)

+2

你没有载体的载体。你有一组矢量向量。 – juanchopanza 2013-05-02 17:57:40

+0

你是什么意思? – Krtko 2013-05-02 17:58:03

+1

您有一个包含500个矢量矢量的数组。 – juanchopanza 2013-05-02 17:58:32

回答

2

这是为int的矢量:

std::vector<int> v; 

此为int的向量的向量:

std::vector<std::vector<int>> v2; 

这是整数的向量,向量的阵列,其是你所拥有的:

std::vector<std::vector<int>> test[500]; 

该阵列的每个元素是std::vector<std::vector<int>>。所以test[0]就是其中之一。

如果你想要为int的500个默认构建的载体载体,你需要

std::vector<std::vector<int>> test(500); 
+0

哈哈感谢兄弟 – Krtko 2013-05-02 18:04:10

+0

现在谷歌搜索阵列和矢量之间的区别。太棒了,谢谢你。 – Krtko 2013-05-02 18:05:34

+0

供将来参考,http://stackoverflow.com/questions/6632971/what-is-the-difference-between-stdarray-and-stdvector-when-do-you-use-one-o – Krtko 2013-05-02 18:06:36

2
test

为int的矢量的矢量500的阵列。你的例子的第二行甚至不应该在这里编译,因为你调用的是std::vector< std::vector<int> >::emplace_back(),它预计一个参数与std::vector<int>兼容,并且你提供了一个int。澄清:

  • teststd::vector< std::vector<int> >[500]
  • test[0]std::vector< std::vector<int> >
  • test[0][0]std::vector<int>
  • test[0][0][0]int

(迂腐C++开发人员会注意到的是,后三者实际上是引用,但我忽略的是为了清楚的类型。)

1

你有什么存在的vector -OF- vector数组我相信因为你正在用两个索引访问数据不是你想要的。

我相信你可能刚刚错字-ED构造函数初始化:

vector< vector<int> > test(500); // Note() instead of [] here. 

这将创建一个矢量的矢量,与500层内的载体为你创建前。然后你的代码的其余部分应该工作!

+0

Oooh man ...大声笑 非常感谢。 – Krtko 2013-05-02 18:02:31

2

一个vector只是一个可调整大小的数组。

要声明的int向量(int数组),只是做:

std::vector<int> vec;

要声明一个阵列,其中各个元件是矢量,这样做:

std::vector< std::vector<int> > vecarr;

要设置矢量的初始大小,请执行以下操作:

std::vector<int> vec(500);不是std::vector<int> vec[500],因为这会创建一个500 std::vectors的数组。同样,std::vector< std::vector<int> > vec[500];创建一个500矢量矢量阵列。

要跳过写作std::,您可以在说明您使用std名称空间之前说using namespace std