c++ - 为什么“新向量[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 和迭代器有关的内容?
解决方案
这里:
int *arr = new int(5);
不创建5
int
s 数组。它制作一个int
并将其初始化为5
. 你想要的是:
int *arr = new int[5];
同样,对于向量,您需要:
vector<int> *arr = new vector<int>[5];
代码new vector<int>(5);
将改为生成一个大小预设为5
.
推荐阅读
- python - 操作 pandas 列
- unity3d - Unity 从另一个类调用方法
- r - 设置 lubridate::floor_date 运行的时间单位
- ios - 当我使用 UITableViewCell 来自定义每个单元格内容时,在 Swift4 中滚动后屏幕布局被破坏
- sql - 声明标量变量问题
- php - AJAX MySQL 更改输入值
- jira - Jira“问题统计”小工具显示每个团队成员的任务数
- wordpress - 延迟加载外部图像
- javascript - 在输入字段中禁用 Chrome 保存的信用卡信息
- xml - Filebeat中xml文件的Multiline.pattern