传染媒介麻烦的传染媒介

时间:2013-05-02 17:56:10

标签: c++ vector int

基本问题 您能否帮我理解如何使用矢量矢量。以vector< vector<int> > help为例。我不明白它是否是一个int的向量,每个都是一个int的向量,或者它是一个向量的向量的向量?我也不明白如何利用它。

示例代码

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

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

基本上我想要的是一个向量的集合大小,每个pt都是int的向量。我宁愿不去单独一堂课。是int矢量的向量,正在研究的正确的事情是什么?

谢谢:)

4 个答案:

答案 0 :(得分:2)

test是由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

(Pedantic C ++开发人员会注意到后三者实际上是引用,但为了清晰起见,我省略了类型。)

答案 1 :(得分: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的默认构造向量的向量,你需要

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

答案 2 :(得分: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::,您可以在此之前说using namespace std,告诉您正在使用std命名空间。

答案 3 :(得分:1)

你所拥有的是vector - of - vector的数组,我相信,因为你用两个索引访问数据并不是你想要的。

我相信您可能只是错误地构建了初始化:

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

这会创建一个矢量矢量,为您预先创建500个内部矢量。那么你的其余代码应该可以工作!