vector与数组的不同之处
时间: 2023-05-28 07:06:14 浏览: 55
1. 大小不同:数组的大小必须在创建时指定,且无法更改,而向量可以在运行时动态调整大小。
2. 存储方式不同:数组在内存中以连续的方式存储,而向量可以使用动态分配的方式存储,这使得向量的插入和删除操作更加高效。
3. 数据类型不同:数组可以存储任何数据类型,包括基本类型和自定义类型,而向量只能存储对象类型。
4. 访问元素方式不同:数组可以使用下标直接访问元素,而向量需要使用迭代器或成员函数来访问元素。
5. 常用操作不同:向量提供了许多方便的操作,如插入、删除、排序、查找等,而数组则需要手动实现这些操作。
相关问题
c++ vector 与数组
c++中的vector和数组都是用来存储同一种类型的数据的容器,但是它们之间还是有很多区别的。下面是它们的一些相同点和不同点:
相同点:
- 都可以用下标操作进行处理
- 都可以用迭代器进行操作(在c++中每个容器都配有各自的迭代器)
- 都可以对同一种类型的数据进行储存
不同点:
- vector可以用size获取长度,而数组不可以
- 数组的长度在定义时就已经确定了,而vector的长度不固定,可以随时增加长度
- vector可以在末尾增加元素(用push_back),而数组不能增加在长度以外的元素
- 数组的长度可以确定,节约空间,而vector不能确定长度,必须在定义时定义一个很大的空间留给它,造成内存的浪费
下面是一个使用vector和数组的例子:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
// 使用数组
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
cout << endl;
// 使用vector
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
```
vector 与数组指针的区别
Vector 是 C++ STL 中的一种数据结构,可以动态地增加或减少其内部存储元素的大小。它可以被视为一个可以自动增长的数组,而且可以在运行时调整大小,无需手动分配或释放内存。Vector 在内存分配方面比较灵活,并提供了许多有用的方法来操作其元素。
数组指针是指向数组第一个元素的指针。它只是一个指向内存中的地址的指针,不提供动态调整大小的功能,也没有内置的方法来操作其元素。数组指针必须在创建时指定其大小,并且该大小不能在运行时更改。
因此,vector 与数组指针之间的主要区别在于其大小是否可以动态调整,以及它们提供的操作方法的不同。Vector 更适合需要动态调整大小的情况,而数组指针则更适合固定大小的情况。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)