STL模板库 常用函数 vector向量容器

2023-11-08

STL模板库

STL是Standard Template Library缩写,中文名字叫标准模板库,由惠普实验室提供,共有三类内容:
算法:以函数模板形式实现的常用算法,如:max、min、swap、find、sort。
容器:以类模板形式实现的常用数据结构,如:栈、队列、链式表、顺序表、红黑树。
迭代器:它是容器的成员,用于帮助访问容器中的元素,使用方法类似于指针。

常用函数

#include <algorithm>
iterator find( iterator start, iterator end, const TYPE& val );
功能:顺序查找
start:第一元素的指针或迭代器
end:最后一个元素的下一个位置
val:待查找的关键数据
返回值:
    找到 [start,end) 范围的指针或迭代器
    找不到则返回end

#include <algorithm>
void sort( iterator start, iterator end );
void sort( iterator start, iterator end, StrictWeakOrdering cmp );
功能:快速排序
start:第一元素的指针或迭代器
end:最后一个元素的下一个位置
cmp:
    bool cmp(T a,T b)
    {
        return a<b;
    }

vector向量容器

头文件:vector
采用顺序结构的内存存储数据,可以通过下标随机访问,因此也被称为数组容器。

构造函数:
vector( size_type num, const TYPE &val );
num:数组的长度
val:初始化数据

vector( input_iterator start, input_iterator end );
功能:使用一组数据初始化数组
start:第一个元素
end:最后一个元素的下一个位置

支持的运算符:
    =、==、!=
    <=、>=、<、> 按照字符串的比较规则进行比较的 
    [] 下标 >= size() 就会出现段错误,数组不会随着访问而扩展内存,而是添加元素才扩展内。

常用成员函数:
void assign( input_iterator start, input_iterator end);
功能:使用一组数据给数组赋值
void assign( size_type num, const TYPE &val );
功能:给数组的前num个元素赋值为val

TYPE at( size_type loc);
功能:访问数组成员,功能相当于[],当loc越界时at函数会抛出异常,而[]越界时可能出现段错误、脏数据、一切正常。

TYPE back();
功能:返回数组中的最后一个元素
TYPE front();
功能:返回数组中的第一个元素

iterator begin();
const_iterator begin() const;
功能:返回指向第一个的元素的迭代器
iterator end();
const_iterator end() const;
功能:返回指向最后一个元素下一个位置的迭代器
注意:迭代器对于vector的用处不大,但对于其它容器迭代器是唯一的遍历方式。

size_type capacity();
功能:获取数组的容量

void clear();
功能:清空数组中的所有元素,容量不变,元素数量变为0。

iterator erase( iterator loc );
功能:删除一个元素
iterator erase( iterator start, iterator end );
功能:删除一部分元素
注意:删除元素时必须提供迭代器

iterator insert( iterator loc, const TYPE &val );
功能:在某个元素之前插入一个元素,位置以迭代器的形式提供
void insert( iterator loc, size_type num, const TYPE &val );
功能:在某个元素之前插入n个元素,位置以迭代器的形式提供
void insert( iterator loc, input_iterator start, input_iterator end );
功能:在某个元素之前插入一组元素,位置以迭代器的形式提供

size_type max_size();
功能:用于计算数组能存储的最大元素数量,因为数组的内存扩张是有限度的(4294967295),具体能存储多个元素由元素的类型决定。

void pop_back();
功能:删除最后一个元素

void push_back( const TYPE &val );
功能:在末尾添加一个元素,当数组内存不够会在现在的基础上扩展一倍内存。

reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
功能:返回一个逆向迭代器,它指向最后个元素
reverse_iterator rend();
const_reverse_iterator rend() const;
功能:返回一个逆向迭代器,它指向第一个元素前一个位置

void reserve( size_type size );
功能:修改数组的容量,只能往大了改。

void resize( size_type size, TYPE val );
功能:修改数组的元素数量
    可以往大了改,相当增加元素 值是val
    也可以往小了改,相当于删除元素

void swap( vector &from );
功能:交换两个数组的元素
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL模板库 常用函数 vector向量容器 的相关文章

  • 为什么 std::vector 可以处理类定义中的不完整类型?

    出现了以下问题 C 标准似乎说 std vector需要一个完整的类型才能工作 看https en cppreference com w cpp container vector https en cppreference com w cp
  • 与 MinGW 的静态和动态/共享链接

    我想从一个简单的链接用法开始来解释我的问题 假设有一个图书馆z它可以编译为共享库 libz dll D libs z shared libz dll 或静态库 libz a D libs z static libz a 让我想要链接它 然后
  • 带有 ASP.NET 按钮回发的 jQuery UI 对话框

    我的 ASP NET 页面上有一个运行良好的 jQuery UI 对话框 jQuery function jQuery dialog dialog draggable true resizable true show Transfer hi
  • 使用管道在父级和子级之间传递整数值

    我对如何正确使用 pipeline 在两个进程之间传递整数值有点困惑 在我的程序中 我首先创建一个管道 然后分叉它 我假设我有 两个 管道 据我了解 这是我的任务 我的父母通过 for 循环检查某个操作的整数值 i 增加计数变量 并将值保存
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 从结构调用 C++ 成员函数指针

    我找到了有关调用 C 成员函数指针和调用结构中的指针的信息 但我需要调用结构内部存在的成员函数指针 但我无法获得正确的语法 我在类 MyClass 的方法中有以下代码片段 void MyClass run struct int MyClas
  • 大量互斥体对性能的影响

    假设我有一个包含 1 000 000 个元素的数组 以及多个工作线程 每个线程都操作该数组中的数据 工作线程可能会使用新数据更新已填充的元素 但每个操作仅限于单个数组元素 并且独立于任何其他元素的值 使用单个互斥锁来保护整个数组显然会导致高
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 在 clang 中向量化函数

    我正在尝试根据此用 clang 对以下函数进行矢量化铿锵参考 http llvm org docs Vectorizers html 它采用字节数组向量并根据以下条件应用掩码this RFC https www rfc editor org
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • c++ - <未解析的重载函数类型>

    在我的班级里叫Mat 我想要一个将另一个函数作为参数的函数 现在我有下面 4 个函数 但是在调用 print 时出现错误 第二行给了我一个错误 但我不明白为什么 因为第一行有效 唯一的区别是功能f不是班级成员Mat but f2是 失败的是
  • 如何防止 Lotus Notes 用户转发或复制通过 System.Net.Mail 发送的邮件?

    我想使用 SMTP 客户端 uiing microsft net 以 C 作为编程语言发送电子邮件 但是对于通过SMTP客户端发送的电子邮件 我们是否可以添加 禁止转发 或 禁止复制 等安全功能 我不希望电子邮件的收件人转发或复制电子邮件的
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 异步/等待 - 是*并发*吗?

    我一直在考虑 C 5 中新的异步内容 并且出现了一个特殊问题 据我了解 await关键字是一个简洁的编译器技巧 语法糖来实现连续传递 http en wikipedia org wiki Continuation passing style
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整

随机推荐

  • chatgpt赋能python:看Python代码的App:提高你的编程技能

    看Python代码的App 提高你的编程技能 Python作为一门流行的编程语言 使用者越来越多 如果你是一名初学者或是有多年的编程经验的工程师 你可能会遇到需要查看Python代码的情况 为了满足这一需求 近年来出现了一些看Python代
  • 如何用cmd查看文件内容的MD5值

    certutil hashfile 文件名称 文件类型 MD5 如 certutil hashfile 123 MP3 MD5
  • 常用函数整理(基础篇)

    目录 strcpy 返回值 strcat Parameters 返回值 例 strncpy Parameters 返回值 例 strncat Parameters 返回值 例 strncmp Parameters 返回值 例 strstr
  • 精灵图与遮罩层的使用方法

    一 精灵图 精灵图的使用步骤 第一步 先测量精灵图局部的大小 设置为盒子的宽度和高度 第二部 测量精灵图局部的坐标值 设置为背景定位的负值 宽 width 20px 高 height 20px 精灵图局部定位值 84px 366px 二 遮
  • monkey命令

    monkey是adb调试工具中的一个命令 用于android设备的稳定性测试 主要是为了测试app会不会出现crash和anr 以及出现的时间和次数 adb shell monkey命令 可以查看命令所能携带的参数 crash 程序崩溃或闪
  • background-position: -192px -48px;//图片定位详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt
  • SAP S/4实操LTMC 数据迁移驾驶舱

    SAP S 4实操LTMC 数据迁移驾驶舱 文章目录 SAP S 4实操LTMC 数据迁移驾驶舱 前言 一 LTMC是什么 二 使用步骤 1 配置好SICF并正常启用LTMC服务 2 数据迁移 2 1 创建迁移项目 2 2 数据整理 总结
  • 蓝牙简单配对(Simple Pairing)协议及代码流程简述

    DESCRIPTION 在BT2 1及之后版本 蓝牙协议有在传统的密码配对 PIN Code Pairing 之外 新增一种简单配对 Simple Pairing 的方式 这种新的配对方式操作更为简单 安全性也更强 目前市面上大部分蓝牙设备
  • 《算法笔记》01

    1 比较交换3个实数值 并按序输出 从键盘输入3个实数a b c 通过比较交换 将最小值存储在变量a中 最大值存储在变量c中 中间值存储在变量b中 并按照从小到大的顺序输出这三个数a b c 末尾输出换行 include
  • kafka客户端连接测试

    客户端代码 package main import fmt github com Shopify sarama kafka 示例代码 func main 配置 config sarama NewConfig 等待服务器所有副本都保存成功后的
  • 【Qt多线程之线程的等待和唤醒】

    QWatiCondition的成员函数 QWaitCondition QWaitCondition bool wait QMutex mutex unsigned long time ULONG MAX void wakeOne void
  • 哪些你朝思暮想的动漫网站-搜嗖工具箱

    AcFun是国内首家弹幕视频网站 这里有全网独家动漫新番 友好的弹幕氛围 有趣的UP主 好玩有科技感的虚拟偶像 年轻人都在用www acfun cn 哔哩哔哩是国内知名的视频弹幕网站 这里有及时的动漫新番 活跃的ACG氛围 有创意的Up主
  • docker pull 设置代理

    简介 你在终端设置代理的时候docker pull的时候是不会走代理的 下面是docker pull设置代理的正确方式 操作 环境是在centos下 如果没有新建下面这个文件夹 sudo mkdir p etc systemd system
  • 毕业设计-基于大数据的新闻推荐系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • 组件的生命周期

    一 组件的生命周期 1 组件的生命周期 至一个组件从 创建 gt 运行 gt 销毁的过程 2 声明周期函数 由Vue提供的内置函数 伴随组件生命周期按次序自动运行 gt 钩子函数 3 生命周期的阶段划分 1 创建阶段 beforeCreat
  • Flutter从入门到放弃之坑的神奇之处?

    坑一 关于环境变量的配置 这里要注意几点 不然你将会在这里卡死 这里只说Mac OS环境变量的配置 因为我是Mac 首先 command shift 打开隐藏文件 如果你是用的是自带的终端 请在这个文件中配置 如果你使用的是zsh请在 这个
  • Pytorch nn.Module的基本使用

    文章目录 nn Module的基本用法 nn Module的其他常用方法 参考资料 nn Module的基本用法 nn Module是所有神经网络的基类 所以你的神经网络类也应该要继承这个基类 当使用时 主要需要实现其两个方法 init 初
  • SPSS问卷数据处理步骤

    SPSS问卷数据处理步骤 一 准备 界面与数据准备工作 1 先处理显示界面问题 改成中文输出 优化操作过程 编辑 选项 2 数据字典 定义变量属性 几个代表性的 复制数据属性 数据 定义变量属性 设好以后 数据 复制数据属性 把几个代表性的
  • SQL 左连接 右表多条数据处理方式

    前言 多表连接经常使用 而一对多的数据处理比较麻烦 用于记录 便于以后使用 正文 SQL server语句 select a t from table1 a left join select from select b ROW NUMBER
  • STL模板库 常用函数 vector向量容器

    STL模板库 STL是Standard Template Library缩写 中文名字叫标准模板库 由惠普实验室提供 共有三类内容 算法 以函数模板形式实现的常用算法 如 max min swap find sort 容器 以类模板形式实现