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

免责声明我花了一个上午的大部分时间进行测试和谷歌搜索。请帮助:) 我做了我的硬件。我找不到向量的向量的任何文档。此外,我拥有所有正确的库,并且正在使用命名空间 std。我是一个菜鸟,我知道命名空间是不好的做法,但它现在对我来说非常方便。

基本上我想要的是一个向量的集合大小,每个 pt 都是一个 int 向量。我宁愿不走单独班级的路。是 int 向量的向量,要研究的东西是正确的吗?

谢谢 :)

4

4 回答 4

2

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

要声明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::,您可以using namespace std在所有这些之前说,告诉您正在使用std命名空间。

于 2013-05-02T18:02:48.603 回答
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]

如果你想要一个由 500 个默认构造的 int 向量组成的向量,你需要

std::vector<std::vector<int>> test(500);
于 2013-05-02T18:01:07.183 回答
2

test是一个包含 500 个 int 向量的数组。您的示例的第二行甚至不应该在这里编译,因为您正在调用std::vector< std::vector<int> >::emplace_back(),它需要一个与 兼容的参数std::vector<int>,并且您提供了一个 int。澄清:

  • test是一个std::vector< std::vector<int> >[500]
  • test[0]是一个std::vector< std::vector<int> >
  • test[0][0]是一个std::vector<int>
  • test[0][0][0]是一个int

(迂腐的 C++ 开发人员会注意到后三个实际上是引用,但为了清楚起见,我从类型中省略了它。)

于 2013-05-02T18:00:04.513 回答
1

你所拥有的是一系列vector-of-vector我相信因为你使用两个索引访问数据不是你想要的。

我相信你可能只是拼写了你的构造函数初始化:

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

这将创建一个向量中的向量,并为您预先创建了 500 个内部向量。然后您的其余代码应该可以正常工作!

于 2013-05-02T18:00:49.043 回答