,c++,arrays,pointers,vector"/>

首页 > 解决方案 > 为什么“新向量[5]" 不创建向量数组?

问题描述

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

标签: c++arrayspointersvector

解决方案


这里:

int *arr = new int(5);

不创建5 ints 数组。它制作一个int并将其初始化为5. 你想要的是:

int *arr = new int[5];

同样,对于向量,您需要:

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

代码new vector<int>(5);将改为生成一个大小预设为5.


推荐阅读