博客
关于我
stl序列式容器——vector
阅读量:552 次
发布时间:2019-03-09

本文共 1255 字,大约阅读时间需要 4 分钟。

STL序列式容器——Vector

简单介绍

vector是STL中最简单的序列式容器,定义在 <vector> 头文件中。它支持随机访问元素,类似于动态数组,同时拥有高效的迭代器支持,特别适用于频繁删除或随机访问元素的场景。此外,vector可以实现队列、数组和堆栈等数据结构的功能。

向量的定义

定义一个向量的方式如下:

#include 
using namespace std;vector
myvt;

向量的初始化

向量通过 push_back() 方法添加元素。例如:

myvt.push_back("something");

变量的容量管理

  • size() 返回当前元素数量。
  • capacity() 返回向量能容纳的最大元素数量。
  • max_size() 返回沿用最优率分配所能拥有的最大容量。
  • reserve() 预留给容器的空间。
  • resize()动态调整向量的大小。

向量的成员函数

向量包含丰富的成员函数,支持高效操作:

判断向量是否为空

使用 empty() 方法检查向量是否为空:

while (!myvt.empty()) {    // 内容}

遍历向量

支持两种遍历方式:

  • 迭代器方法:
  • vector
    vt;for (auto iter = vt.begin(); iter != vt.end(); ++iter) { // 类型处理}
    1. 使用常用函数 at(), front() 和 back() 来访问元素。
    2. 高级编程功能

      向量支持多种高级操作:

      元素的访问

      • 使用 at() 定位元素,如 myvt.at(0)。
      • 使用 [] 操作符直接访问。
      • 通过 front() 获取第一个元素,back() 获取最后一个元素。

      迭代器操作

      • 使用 begin() 和 end() 获取起始和末尾迭代器。
      • 使用 rbegin() 和 rend() 获取逆向迭代器。

      元素查找

      • 使用 find() 方法查找元素位置。
      • 使用自定义谓词与 find_if() 组合进行复杂查找。

      元素操作

      • 增添元素:push_back() 和 insert()(支持任意位置插入)。
      • 删除元素:pop_back() 和 erase()(支持任意位置删除)。-션操作:clear()清空,同时还可以使用swap()交换向量内容。

      关于 vector<bool> 的特殊处理

      vector<bool> 提供了优化的内存布局,以更高效地存储布尔值。

      总体操作流程

      从上述介绍可以看出,向量的使用步骤如下:

    3. 定义并声明向量。
    4. 使用 push_back() 向量中添加元素。
    5. 调用相关的成员方法(如 reserve(), size(), clear() 等)管理容量和数据。
    6. 通过迭代器或直接访问方法遍历向量元素。
    7. 使用高级算法处理向量数据,如排序、查找、插入和删除操作。
    8. 通过合理使用 vector,开发者可以充分发挥其高效的容器特性和灵活的操作能力。

    转载地址:http://ttzsz.baihongyu.com/

    你可能感兴趣的文章
    python---使用celery分布式系统异步发送短信(云通讯)来验证登录
    查看>>
    python--003--百分号字符串拼接、format
    查看>>
    Python--10、线程
    查看>>
    Python--Redis实战:第四章:数据安全与性能保障:第4节:复制
    查看>>
    python--基本代码规范
    查看>>
    Python--抽象类接口类
    查看>>
    PYTHON--欧拉习题二
    查看>>
    python--高级应用总结
    查看>>
    python-520表白代码,我看谁说程序员不懂浪漫,送你几套表白代码,一步到位
    查看>>
    Python-Asyncio TypeError:无法在‘;等待‘;表达式中使用对象DICT
    查看>>
    Python-AttributeError:‘;dict&39;对象没有属性‘;序列‘;
    查看>>
    Python-ldap:是否可以在不显式写入密码的情况下进行绑定?
    查看>>
    python出现 unknown encoding: idna 的处理方法
    查看>>
    Python出现 RuntimeError: dictionary changed size during iteration 的解决方法
    查看>>
    Python-numpy(2)数组的操作
    查看>>
    Python-Numpy的tile函数用法
    查看>>
    python-open函数
    查看>>