使用 C++ STL 的数组实现
array implementation using c++ STL
我试过这两个无法理解的区别
vector<int >a(n) and vector<int >a[n]
请有人解释,谢谢
对你的问题的简单回答是:
-
vector<int >a(n)
是单个vector<int>
对象,初始大小为n
个元素。 -
vector<int >a[n]
是一个固定的n
vector 对象的数组,每个对象的初始大小为 0。
你的问题根本没有给出上下文,所以很难给出答案。
首先,向量和数组之间存在差异。数组是相同类型元素的固定大小容器,向量是相同类型元素的可调整大小容器。对于数组,您不需要 STL(尽管 STL 中有数组实现(。
这些是您的选择:
#define ARRAY_SIZE 10
int my_plain_arr[ARRAY_SIZE]; // can never store more than 10 elements
std::vector<int> my_vector(ARRAY_SIZE); // 10 is the initial size, can grow
std::array<int, ARRAY_SIZE> my_stl_array; // can never store more than 10 elements
你的小代码示例显示的实际上是一个向量数组。
我不能称自己为经验丰富的 c++ 用户,但我希望我的答案会有所帮助。主要有3种创建一维数组的方法
矢量矢量名称(或(矢量- 矢量名称(元素数,起始值(
- 类型 数组名称[大小]
- 类型* 数组名称
如果你使用第一种方式,你可以做一些好事,比如"vectorName.push_back(element(",所以它是一个动态数组。基本上,您无需决定所需的尺寸元素。
如果使用第二种方式创建数组,但在使用数组之前必须确定数组的最大大小。
如果使用第三种方式,则正在创建一个指向数组第一个元素的指针,并且可以使用new关键字在堆上分配空间,但您还需要决定它将占用多少空间。
相关文章:
- 在给定程序中降低矢量数组实现堆栈的时间复杂度有哪些不同的可能方法?
- C++ 使用数组实现堆栈
- 使用 C++ STL 的数组实现
- 为自定义数组实现迭代器
- 二进制搜索树的数组实现
- Boyer Moore 动态数组实现
- 为什么这个普通的数组实现比STD ::向量实现性能慢
- 通过访问二维数组实现双线性插值的概念类似于一维数组
- 通过数组实现BST,通过链表实现堆
- 可以使用 1D 数组实现 0-1 背包吗?
- 使用循环数组实现矢量
- 使用链表数组实现哈希表
- 队列的数组实现:奇怪的输出
- 如何使用指针数组实现节点
- 使用数组实现一个简单的队列
- 多维数组实现
- 堆栈的数组实现
- IntSet数组实现
- 用字符数组实现BigInteger的上限是多少?
- 链表vs.动态数组实现一副牌?c++