STL——Vector模板类常见函数

2023-11-01

由于经常在做题中遇到,所以记录下:

#include<vector>//包含头文件

建立Vector

 vector<int> test;//建立一个vector

 

1、获取vector里的元素个数

int len = vec.size();

2、向vector添加元素

int temp;

vec.push_back(temp);//尾插

//vector<int>vec 第一个数是 vec.front();  最后一个数是vec.back();这里和迭代器遍历不一样,这里返回数字,那里是个指针 

3、初始化vector,有五种方式

vector<int>vec;   //初始化为空

vector<int>vec(v1);  //用另一个vector来初始化,即构造一个副本

vector<int>vec(n, i); //大小为n,并全部初始化为元素i (常用)

vector<int>(n); //构造大小为n的容器,没有初始化里面的元素

vector<int>{1,2,3,4}; //构造大小为4,并初始化里面的各个元素

4、使用迭代器遍历容器

vector<int>::iterator it;

for(it=vec.begin();it!=vec.end();it++) 

     vec[it]=0;

或者

for(auto &i:vec)

      i = 0;

注意:关于vector的下标操作。vector的下标操作只能改变或者获取已有的元素的值,不能往vector里添加元素!

 

5、其他函数

vec.empty();    //判断是否为空,为空返回true,否则返回false;

vec.capacity(); //获取容器分配的存储空间,区别于vec,size()

vec.resize(n+m); //调整vec的大小变为n+m

vec.swap(vec2);//vec和vec2类型要相同,大小可以不同,直接交换容器内容,所有的迭代器,引用以及指针在交换后依旧有效,全都交换了一遍。

顺序容器的赋值操作:

c1 = c2 删除容器 c1 的所有元素,然后将 c2 的元素复制给 c1。c1 和c2 的类型(包括容器类型和元素类型)必须相同
c1.swap(c2) 交换内容:调用完该函数后,c1 中存放的是 c2 原来的元素,c2 中存放的则是 c1 原来的元素。c1 和 c2 的类型必须相同。该函数的执行速度通常要比将 c2 复制到 c1 的操作快
c.assign(b,e) 重新设置 c 的元素:将迭代器 b 和 e 标记的范围内所有的元素复制到 c 中。b 和 e 必须不是指向 c 中元素的迭代器
c.assign(n,t) 将容器 c 重新设置为存储 n 个值为 t 的元素

 

6、vector经常用到的一些函数功能。需加头文件 #include<algorithm>

(1)对元素排序

sort(vec.begin(),vec.end());

(2)反转容器

reverse(vec.begin(), vec.end());

(3)交换元素

swap(vec[i],vec[j]);
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL——Vector模板类常见函数 的相关文章

  • 向进度条添加百分比文本 C#

    我有一个方法可以显示进程栏何时正在执行以及何时成功完成 我工作得很好 但我想添加一个百分比 如果完成 则显示 100 如果卡在某个地方 则显示更少 我在网上做了一些研究 但我无法适应我正在寻找的解决方案 这是我的代码 private voi
  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 使用 std::packaged_task/std::exception_ptr 时,线程清理程序报告数据争用

    我遇到了线程清理程序 TSan 的一些问题 抱怨某些生产代码中的数据争用 其中 std packaged task 通过将它们包装在 std function 中而移交给调度程序线程 对于这个问题 我简化了它在生产中的作用 同时触发 TSa
  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 当我们想要返回对象的引用时,为什么我们在赋值运算符中返回 *this 而通常(而不是 this)?

    我正在学习 C 和指针 我以为我理解了指针 直到我看到这个 一方面 asterix 运算符是解引用的 这意味着它返回值所指向的地址中的值 而与号 运算符则相反 它返回值存储的地址记忆 现在阅读有关赋值重载的内 容 它说 我们返回 this因
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中

随机推荐

  • 鸿蒙珠融入体内,斗罗大陆同人小说排行榜。第一名:《斗罗大陆之超级无敌》:主角...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 斗罗大陆同人小说排行榜 第一名 斗罗大陆之超级无敌 主角玉天龙被鸿蒙紫珠带着穿越到斗罗大陆 遁入柳二龙体内 柳二龙未与他人交合 便生下玉天龙 斗罗大陆之超级无敌 这本书拥有系统 鸿蒙紫珠 召唤技
  • 项目开发中常见问题汇总

    已经在拦截中配置访问静态资源不拦截 但是在访问静态资源时 仍然出现404错误 解决办法 在配置文件中配置 spring mvc static path pattern static spring web resources static l
  • VC6与VISIO2007的冲突

    装了VC6 在 文件 gt 打开 时会出错 以下是查到的解决方法 如果在VC6 0中的 FileView 右键点 add files to folder 或者在Project菜单点Add to project Files都会报devshl
  • element表格实现溢出隐藏单元格增加复制按钮

    此功能可以实现只写一个公共复制按钮 可以在多个页面的表格中使用 项目框架为vue 用到了element ui vuex clipboard 如果不想使用vuex 则需要想办法把复制按钮的位置x y坐标写成公共的变量 1 复制按钮 如果整个项
  • 使用dd命令制作Ubuntu U盘启动盘(使用U盘启动盘安装Ubuntu系统)

    1 查看挂载的U盘的设备名称 sudo fdisk l 2 如果U盘还在挂载状态 卸载它 否则 会提示设备或资源正忙 umount dev u盘名 3 格式化U盘 sudo mkfs ntfs f dev u盘名 4 写入启动引导 sudo
  • Redis面试题(一): Redis到底是多线程还是单线程?

    0 redis单线程问题 单线程指的是网络请求模块使用了一个线程 所以不需考虑并发安全性 即一个线程处理所有网络请求 其他模块仍用了多个线程 1 为什么说redis能够快速执行 1 绝大部分请求是纯粹的内存操作 非常快速 2 采用单线程 避
  • C++泛型编程

    写在前面 0 所谓泛型编程就是独立于任何特定类型的方式编写代码 使用泛型程序时 需要提供具体陈旭实例所操作的类型或者值 我们经常用到STL容器 迭代器 和算法都是泛型编程的例子 模板是C 支持参数化多态的工具 使用模板可以使用户为类或者函数
  • 瑞芯微rockchip PX30触摸屏调试记录

    系列文章目录 瑞芯微rockchip PX30 串口调试记录 瑞芯微rockchip PX30 显示屏调试 瑞芯微rockchip PX30触摸屏调试记录 瑞芯微rockchip PX30 QT环境搭建 瑞芯微rockchip PX30 G
  • 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用

    这段时间要把tinyxml从静态库弄成动态库 要用到 declspec dllexport 和 declspec dllimport 来导出dll和lib文件 终于弄明白了export和import的作用 下面从使用的角度来说明一下他们的功
  • 我用ChatGPT写神经网络:一字不改,结果竟很好用

    自从去年底推出以来 对话式 AI 模型 ChatGPT 火遍了整个社区 ChatGPT 的确是一个了不起的工具 就像一个 潘多拉魔盒 一旦找到正确的打开方式 你或许会发现 自己再也离不开它了 作为一个全能选手 人们给 ChatGPT 提出的
  • exe 网页套壳_一日一技

    Matrix 首页推荐 Matrix 是少数派的写作社区 我们主张分享真实的产品体验 有实用价值的经验与思考 我们会不定期挑选 Matrix 最优质的文章 展示来自用户的最真实的体验和观点 文章代表作者个人观点 少数派仅对标题和排版略作修改
  • JS——输入输出语法&数组的操作

    JavaScript输入输出语法 目标 能写出常见的JavaScript输入输出语法 输出语法 语法1 document write 要输出的内容 作用 向body内输出内容 注意 如果输出的内容写的是标签 也会被解析成网页元素 语法2 a
  • C#----对子窗体进行层叠排列

    欢迎大家提出意见 一起讨论 转载请标明是引用于 http blog csdn net chenyujing1234 代码 VS2008 http www rayfile com zh cn files f4235a26 9aa8 11e1
  • python中os库用法详解(总结)

    os库主要是对文件和文件夹进行操作 在Python中对 件和 件夹的操作要借助os模块 的相关功能 具体步骤如下 1 导 os模块 import os 2 使 os 模块相关功能 os 函数名 1 件重命名 os rename 标 件名 新
  • JavaScript(js)

    js 基础语法 1 与html结合使用 内部JS 定义
  • OpenCV学习第十三篇:提取水平和垂直线(去除干扰线)

    1 结构元素 可以是任意形状的结构元素 矩形 圆 直线 磁盘形状 砖石形状等 2 提取步骤 输入图像彩色图像imread 转换为灰度图像cvtColor 转换为二值图像adaptiveThreshold 定义结构元素 开操作 腐蚀 膨胀 提
  • mysql-8.0.17-winx64 安装包 与 安装教程

    初步安装教程 https www cnblogs com cyl048 p 11305642 html 安装时可能需要使用的命令 进入到mysql安装包的bin目录下 cd d D Program Files x86 mysql 8 0 1
  • redis-benchmark

    redis benchmark Redis自带一个叫redis benchmark的工具来模拟N个客户端同时发出M个请求 影响 Redis 性能的因素 有几个因素直接决定 Redis 的性能 它们能够改变基准测试的结果 所以我们必须注意到它
  • TensorFlow之模型保存与加载

    模型在训练过程中或者在训练之后 模型的执行过程能被保存 也就是 模型能从暂停中恢复以免训练的时间过长 因此 被保存的模型可以被共享 其他人可以重新构建相同的模型 被保存的模型以如下的两种方式进行共享 创建模型的代码 被训练模型的权重或者参数
  • STL——Vector模板类常见函数

    由于经常在做题中遇到 所以记录下 include