为什么“ new vector <int> [5]”不创建向量数组?

时间:2019-03-22 09:19:34

标签: c++ arrays pointers vector

我有一个代码片段,旨在使用关键字“ new”创建向量数组。这样new所返回的地址将分配给vector类型的指针。

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和迭代器有关的内容?

2 个答案:

答案 0 :(得分:1)

这里:

int *arr = new int(5);

不构成5 int个数组。它产生一个int并将其初始化为5。相反,您想要的是:

int *arr = new int[5];

类似地,使用向量,您需要这样做:

vector<int> *arr = new vector<int>[5];

代码new vector<int>(5);会生成一个大小预先设置为5的向量。

答案 1 :(得分:1)

假设是错误的。

primaryKey

创建一个由5个类型为SongsData = try jsonDecoder.decode(Songs.self, from: data) let realm = try! Realm() try! realm.write { realm.add(SongsData, update: true) } catch { Logger.log.printOnConsole(string: "Unable to convert to data") } 的元素组成的数组。

此代码有效:

new vector<int>[5]

输出为

vector<int>