【发布时间】:2019-08-13 05:58:56
【问题描述】:
我有一个代码 sn-p,旨在使用关键字“new”创建一个向量数组。这样由 new 返回的地址被分配给一个向量类型的指针。
vector<vector<int>> *adj = new vector<vector<int>>[V]; // creates a 2-D vector
vector<vector<int>> *adj = new vector<vector<int>>[V]; //creates a 1-D vector
类比内置数据类型数组的创建,
int *arr = new int[V]; //creates an array of integers
下面的代码应该创建一个包含整数的向量数组
vector<int> *arr = new vector<int>[V]; //should create an array of vectors
但它实际上创建的是一个整数向量。
我是否在这里遗漏了与分配给指针的 STL 和迭代器相关的内容?
【问题讨论】:
-
int *arr = new int(5);创建一个值为 5 的int。 -
为什么要这样做?
vector<vector<int>>(5,vector<int>(5,0))将创建一个 5x5 向量的向量,每个值初始化为 0。如果需要,您可以使用resize动态调整大小,我认为不需要新的。 -
题目与正文不符。标题中的代码确实创建了一个向量数组。
-
new vector<int>[5]确实 创建 5 个 emptyvector<int>s。为什么你认为它只创造了一个? -
@qoinqoder 在你编辑你的问题之后,你的问题的前提现在是错误的。
new vector<int>[V];确实创建了一个向量数组。为什么你认为没有?
标签: c++ arrays pointers vector