学会C++中的vector的基本操作

发布于:2025-06-25 ⋅ 阅读:(23) ⋅ 点赞:(0)

vector 是 C++ 标准库中的一个动态数组类,它可以在运行时自动调整大小,非常适合用于处理大小不确定的集合。下面是 vector 的常见用法示例,帮助你更好地理解如何使用它。

注意:所有用数组完成的任务都可以用vector完成。

1. 引入头文件

首先,你需要引入 vector 的头文件:

#include <vector>

2. 定义和初始化 vector

vector 可以通过几种方式进行初始化:

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 1. 默认构造一个空的 vector
    vector<int> v1; 

    // 2. 使用初始化列表初始化
    vector<int> v2 = {1, 2, 3, 4};

    // 3. 指定大小并初始化所有元素为0
    vector<int> v3(5, 0);  // 长度为5,所有元素初始化为0

    // 4. 使用其他 vector 初始化
    vector<int> v4(v2);  // 复制v2

    return 0;
}

3. 访问元素

vector 允许通过下标或迭代器访问元素,类似于数组。

cout << v2[0] << endl;  // 访问第一个元素
cout << v2.at(1) << endl;  // 使用 at() 方法(有越界检查)

4. 增加元素

使用 push_back() 可以向 vector 添加元素到末尾。

vector<int> v = {1, 2, 3};
v.push_back(4);  // 向末尾添加元素 4
cout << v[3] << endl;  // 输出 4

5. 删除元素

pop_back() 用于删除 vector 中的最后一个元素。

v.pop_back(); // 删除最后一个元素

如果你需要删除 vector 中的某个特定位置的元素,可以使用 erase() 方法:

v.erase(v.begin() + 1); // 删除索引1的元素   注意:索引=下标,索引1为第二个元素

6. 调整大小

resize() 方法用于调整 vector 的大小,可以缩小或扩展。

v.resize(5); // 将大小调整为 5(扩展或截断)

7. 插入元素

insert() 方法可以在 vector 的任意位置插入元素。

v.insert(v.begin() + 1, 99); // 在索引1的位置插入 99

8. 遍历元素

vector 支持使用迭代器进行遍历:

for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
    cout << *it << " ";
}
cout << endl;

或者使用范围 for 循环(C++11 起支持):

for (int x : v) {
    cout << x << " ";
}
cout << endl;

9. 获取大小

你可以使用 size() 方法获取 vector 中元素的数量:

cout << "Size: " << v.size() << endl;

10. 检查是否为空

使用 empty() 方法可以检查 vector 是否为空。

if (v.empty()) {
    cout << "Vector is empty" << endl;
} else {
    cout << "Vector is not empty" << endl;
}

11. 容量管理

capacity() 方法返回 vector 当前的容量(实际分配的内存大小),可能大于实际的元素个数。你可以使用 reserve() 来增加 vector 的容量,避免多次扩容导致性能开销。

cout << "Capacity: " << v.capacity() << endl;
v.reserve(20);  // 预先为 20 个元素分配空间

12. 清空元素

如果你想删除所有元素,可以使用 clear() 方法:

v.clear(); // 删除所有元素

完整示例

#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> v = {1, 2, 3};

    // 向 vector 中添加元素
    v.push_back(4);
    v.push_back(5);

    // 遍历输出元素
    for (int x : v) {
        cout << x << " ";  // 输出 1 2 3 4 5
    }
    cout << endl;

    // 删除最后一个元素
    v.pop_back();

    // 插入元素
    v.insert(v.begin() + 1, 99);  // 在索引1的位置插入 99

    // 输出修改后的 vector
    for (int x : v) {
        cout << x << " ";  // 输出 1 99 2 3 4
    }
    cout << endl;

    // 获取大小和容量
    cout << "Size: " << v.size() << endl;  // 输出 5
    cout << "Capacity: " << v.capacity() << endl;  // 输出当前容量

    // 清空 vector
    v.clear();
    cout << "Size after clear: " << v.size() << endl;  // 输出 0

    return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到