我有一个代码片段,旨在使用关键字“ 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和迭代器有关的内容?
答案 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>