首页 经验

c++ vector 2024

时间: 2024-10-20 09:01:16

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)


std::vector 是 C++ 标准库中的一个动态数组容器,存放在 <vector> 头文件中。它可以存储任何类型的对象,并提供了动态调整大小的能力,使得使用起来灵活且方便。


特性


- 动态大小std::vector 可以根据需要动态增加或减少元素的数量。

- 支持随机访问:与数组一样,可以使用下标访问元素。

- 自动内存管理:容器负责内存的分配和释放。

- 丰富的成员函数:支持多种操作,如插入、删除、排序、查找等。


用法示例


下面是一个 std::vector 的基本用法示例,包括创建、访问、修改、遍历和其他常用操作。


1. 包含头文件


在使用 std::vector 时,需要包含头文件:


cpp

#include <vector>

#include <iostream>


2. 创建和初始化


cpp

std::vector<int> vec1; // 创建一个空的整数 vector

std::vector<int> vec2(10); // 创建一个包含 10 个默认初始化元素的 vector

std::vector<int> vec3(10, 5); // 创建一个包含 10 个值为 5 的元素的 vector

std::vector<int> vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表初始化


3. 添加和删除元素


cpp

vec1.push_back(1); // 在末尾添加元素

vec1.push_back(2);

vec1.push_back(3);


vec1.pop_back(); // 删除末尾元素


vec1.insert(vec1.begin() + 1, 10); // 在指定位置插入元素


vec1.erase(vec1.begin() + 1); // 删除指定位置的元素


vec1.clear(); // 清空 vector,删除所有元素


4. 访问元素


cpp

int first = vec4[0]; // 使用 operator[] 访问第一个元素

int second = vec4.at(1); // 使用 at() 访问第二个元素(提供边界检查)


if (!vec4.empty()) { // 检查 vector 是否为空

    std::cout << "Size: " << vec4.size() << std::endl; // 获取当前元素数量

}


5. 遍历元素


cpp

// 使用下标访问

for (size_t i = 0; i < vec4.size(); ++i) {

    std::cout << vec4[i] << " ";

}


// 使用范围 for 循环

for (const auto& element : vec4) {

    std::cout << element << " ";

}


// 使用迭代器遍历

for (std::vector<int>::iterator it = vec4.begin(); it != vec4.end(); ++it) {

    std::cout << *it << " ";

}


6. 其他方法


cpp

size_t size = vec4.size(); // 获取当前元素数量

size_t capacity = vec4.capacity(); // 获取当前容量

vec4.resize(20); // 改变大小,添加默认值

vec4.reserve(50); // 减少内存分配次数,预留空间

vec4.shrink_to_fit(); // 减少容量以适应当前大小


注意事项


- std::vector 的内存是连续的,这使得随机访问操作(如使用下标)非常高效。

- 添加元素时,如果超出了当前容量,std::vector 会自动扩展其容量,可能会导致性能下降,因此预留适当的容量可以提高效率。

- 当使用 at() 方法时,如果索引越界,会抛出 std::out_of_range 异常,而使用 operator[] 则不会进行边界检查。


小结


std::vector 是 C++ 中灵活且高效的数据存储工具,广泛应用于各种数据结构和算法实现。熟悉 std::vector 的用法及其特性是掌握 C++ 编程的重要基础。


文章列表 下一个 pytest

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号