【开发内功】STL vector学习

admin 2024年2月12日14:04:18评论9 views字数 1738阅读5分47秒阅读模式
【开发内功】STL vector学习

vector 简介

【开发内功】STL vector学习
std::vector 是C++标准库的一部分,提供了一个动态数组的功能。它能够存储任何类型的数据,在内存中连续存储元素,允许通过索引高效访问元素,以及在数组末尾添加或删除元素。
【开发内功】STL vector学习
主要特点:
  • 动态扩展: std::vector 可以在运行时改变大小。
  • 随机访问: 通过下标(O(1) 时间复杂度)快速访问任何元素。
  • 连续存储: 元素在内存中连续存储,这对缓存友好,并可使用指针或迭代器范围访问。
基本操作:
  • push_back(): 在末尾添加元素。
  • pop_back(): 删除末尾元素。
  • size(): 返回元素个数。
  • capacity(): 返回不增加内存分配即可存储的元素总数。
  • resize(): 改变元素个数。
  • clear(): 移除所有元素。
  • empty(): 检查容器是否为空。
【开发内功】STL vector学习

实例说明

【开发内功】STL vector学习
  • 若要使用vector,需要先导入vector头文件
  • #include <vector>
  • 然后可以定义一个vector并往末尾push和pop值:
  • // 初始化vectorstd::vector<int> v;// push_back(), 在末尾添加元素v.push_back(1);v.push_back(2);v.push_back(3);v.pop_back();
  • 然后就可以使用迭代器来遍历vector

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

   【开发内功】STL vector学习

  • 下面给出一个完整的示例代码:

#include <iostream>#include <vector>int main() {    // 初始化vector    std::vector<int> v;    // push_back(): 在末尾添加元素    v.push_back(1);    v.push_back(2);    v.push_back(3);    // pop_back(): 删除末尾元素    v.pop_back();    // size(): 返回元素个数    std::cout << "Size: " << v.size() << std::endl;    // capacity(): 返回容量    std::cout << "Capacity: " << v.capacity() << std::endl;    // resize(): 改变元素个数    v.resize(5); // 如果新大小大于原大小,会添加使用默认构造的元素    // clear(): 移除所有元素    v.clear();    std::cout << "Size after clear: " << v.size() << std::endl;    // empty(): 检查容器是否为空    std::cout << (v.empty() ? "Vector is empty" : "Vector is not empty") << std::endl;    // 再次初始化vector用以说明迭代器操作    v = {1, 2, 3, 4, 5};    // begin(), end(): 迭代器操作    for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) {        std::cout << *it << " ";    }    std::cout << std::endl;    // rbegin(), rend(): 反向迭代器操作    for (std::vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); ++it) {        std::cout << *it << " ";    }    std::cout << std::endl;    // 使用下标随机访问    std::cout << "Element at index 2: " << v[2] << std::endl;    // 使用at()防止越界(它会检查索引并抛出std::out_of_range异常)    std::cout << "Element at index 3: " << v.at(3) << std::endl;    // 演示reserve(): 预分配容量    v.reserve(10);    std::cout << "Capacity after reserve: " << v.capacity() << std::endl;    return 0;}

原文始发于微信公众号(赛博安全狗):【开发内功】STL vector学习

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月12日14:04:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【开发内功】STL vector学习https://cn-sec.com/archives/2488662.html

发表评论

匿名网友 填写信息