基本问题 您能否帮我理解如何使用矢量矢量。以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矢量的向量,正在研究的正确的事情是什么?
谢谢:)
答案 0 :(得分:2)
test
是由500个向量的向量组成的数组。您的示例的第二行甚至不应该在这里编译,因为您正在调用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
。(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个内部矢量。那么你的其余代码应该可以工作!