c++ 数组与vector
时间: 2023-08-14 09:13:15 浏览: 155
C++ 中的数组和 vector 都是用来存储多个元素的容器,但它们有一些区别。
数组是一种固定大小的容器,它在声明时需要指定长度,并且长度不能改变。数组中的元素在内存中是连续存储的,可以通过索引访问和修改元素。数组的声明方式如下:
```cpp
int arr[5]; // 声明一个包含 5 个整数的数组
```
使用数组时,需要注意数组的下标从 0 开始,所以访问第一个元素的下标是 0,访问最后一个元素的下标是数组长度减一。
Vector 是 C++ 标准库中提供的动态数组容器,它可以根据需要动态调整大小。Vector 中的元素在内存中也是连续存储的,可以通过索引访问和修改元素,还提供了一系列方便的成员函数用于添加、删除和访问元素。Vector 的声明方式如下:
```cpp
#include <vector>
std::vector<int> vec; // 声明一个整数类型的 vector
```
Vector 的大小可以随时改变,可以使用 `push_back()` 函数向 vector 的末尾添加元素,也可以使用 `pop_back()` 函数删除末尾的元素。
总结一下,数组适用于已知大小且不需要频繁改变大小的情况,而 vector 适用于需要动态调整大小的情况。
相关问题
c++ 数组转vector
以下是C++中将普通数组转换为vector的方法:
方法一:使用循环遍历数组并逐个添加到vector中。
```cpp
#include <iostream>
#include <vector>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
std::vector<int> vec;
for (int i 0; i < size; i++) {
vec.push_back(arr[i]);
}
// 输出vector中的元素
for (int i = 0; i < vec.size(); i++) {
std::cout << vec[i] << " ";
}
return 0;
}
```
方法二:使用vector的构造函数,将数组的起始地址和结束地址作为参数传递给构造函数。
```cpp
#include <iostream>
#include <vector>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
std::vector<int> vec(arr, arr + size);
// 输出vector中的元素
for (int i = 0; i < vec.size(); i++) {
std::cout << vec[i] << " ";
}
return 0;
}
```
c++数组实现vector
C++数组可以实现类似于vector的动态数组功能。具体实现方法如下:
```c++
template <typename T>
class Vector {
private:
T* data;
int size;
int capacity;
public:
Vector() {
data = new T[1];
size = 0;
capacity = 1;
}
void push_back(T val) {
if (size == capacity) {
T* newData = new T[2 * capacity];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
capacity *= 2;
}
data[size++] = val;
}
T& operator[](int index) {
return data[index]; }
int getSize() {
return size;
}
};
```
阅读全文