当前位置: 首页> 游戏> 单机 > C++——STL容器之vector讲解

C++——STL容器之vector讲解

时间:2025/7/12 20:54:47来源:https://blog.csdn.net/weixin_73646107/article/details/139874248 浏览次数:0次

文章目录

  • vector讲解
      • 1. 引入头文件
      • 2. 声明和初始化
      • 3. 基本操作
        • 添加元素
        • 访问元素
        • 修改大小
        • 删除元素
        • 迭代器
      • 4. 常见操作
      • 5. 总结

vector讲解

std::vector 是 C++ 标准库中的一个动态数组容器类,提供了动态大小的数组功能。它是标准模板库 (STL) 的一部分,提供了一种方便、高效的方式来管理和操作动态数组。以下是对 std::vector 的详细讲解,包括其主要特性、使用方法和常见操作。

1. 引入头文件

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

#include <vector>

2. 声明和初始化

#include <vector>
#include <iostream>int main() {std::vector<int> vec1;              // 默认构造函数,创建一个空的 vectorstd::vector<int> vec2(10);          // 创建一个包含 10 个元素的 vector,每个元素都被初始化为 0std::vector<int> vec3(10, 5);       // 创建一个包含 10 个元素的 vector,每个元素都被初始化为 5std::vector<int> vec4 = {1, 2, 3};  // 列表初始化for (int i : vec4) {std::cout << i << " ";}return 0;
}

3. 基本操作

添加元素
  • push_back(const T& value): 在 vector 的末尾添加一个元素
  • emplace_back(Args&&... args): 在 vector 的末尾直接构造一个元素,效率更高
#include <vector>
#include <iostream>int main() {std::vector<int> vec;vec.push_back(1);vec.push_back(2);vec.emplace_back(3);  // 直接构造for (int i : vec) {std::cout << i << " ";}return 0;
}
访问元素
  • operator[]at(): 访问指定位置的元素
  • front(): 返回第一个元素
  • back(): 返回最后一个元素
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3};std::cout << vec[0] << std::endl;     // 使用下标运算符std::cout << vec.at(1) << std::endl;  // 使用 at()std::cout << vec.front() << std::endl;  // 返回第一个元素std::cout << vec.back() << std::endl;   // 返回最后一个元素return 0;
}
修改大小
  • resize(size_t new_size): 调整 vector 的大小
  • reserve(size_t new_cap): 增加 vector 的容量以避免频繁的内存重新分配
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3};vec.resize(5);  // 调整大小为 5,新增元素默认初始化为 0vec.reserve(10);  // 预留空间,避免频繁的内存分配for (int i : vec) {std::cout << i << " ";}return 0;
}
删除元素
  • pop_back(): 删除最后一个元素
  • erase(iterator pos): 删除指定位置的元素
  • clear(): 清空 vector 中的所有元素
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3, 4};vec.pop_back();  // 删除最后一个元素vec.erase(vec.begin() + 1);  // 删除第二个元素vec.clear();  // 清空 vectorstd::cout << "Vector size after clear: " << vec.size() << std::endl;return 0;
}
迭代器
  • begin(): 返回指向第一个元素的迭代器
  • end(): 返回指向最后一个元素后一位置的迭代器
  • rbegin(): 返回指向最后一个元素的反向迭代器
  • rend(): 返回指向第一个元素前一位置的反向迭代器
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3, 4};for (auto it = vec.begin(); it != vec.end(); ++it) {std::cout << *it << " ";}std::cout << std::endl;for (auto rit = vec.rbegin(); rit != vec.rend(); ++rit) {std::cout << *rit << " ";}std::cout << std::endl;return 0;
}

4. 常见操作

  • 大小和容量:
    • size(): 返回元素数量
    • capacity(): 返回当前容量
    • empty(): 检查 vector 是否为空
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3};std::cout << "Size: " << vec.size() << std::endl;std::cout << "Capacity: " << vec.capacity() << std::endl;std::cout << "Is empty: " << vec.empty() << std::endl;return 0;
}
  • 数据访问:
    • data(): 返回指向 vector 数据的指针
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3};int* data = vec.data();for (size_t i = 0; i < vec.size(); ++i) {std::cout << data[i] << " ";}std::cout << std::endl;return 0;
}
  • 插入元素:
    • insert(iterator pos, const T& value): 在指定位置插入一个元素
    • insert(iterator pos, size_t count, const T& value): 在指定位置插入多个元素
#include <vector>
#include <iostream>int main() {std::vector<int> vec = {1, 2, 3};vec.insert(vec.begin() + 1, 10);  // 在第二个位置插入 10vec.insert(vec.end(), 2, 20);     // 在末尾插入两个 20for (int i : vec) {std::cout << i << " ";}return 0;
}

5. 总结

std::vector 是一个功能强大且灵活的动态数组容器,提供了多种方便的操作方法,适用于各种场景。通过了解和掌握这些基本操作,可以高效地使用 std::vector 来管理和处理数据。

关键字:C++——STL容器之vector讲解

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: