STL ---- vector 使用

news2024/10/7 16:18:24

单纯的使用vector不和algorithm连用.

vector自带的方法:

push_back(num) pop_back()

push_back 添加元素, pop_back删除元素.添加和删除都是在末尾添加和删除的.

void assign(const_iterator first,const_iterator last);	// 相当于拷贝函数
void assign(size_type n,const T& x = T());		// 清除之前的内容,并且初始化n个x

demo:

    vector<int> v_num{1, 2, 3, 4, 5};
    vector<int> v_data;
    vector<int>::const_iterator it = v_num.begin();

    v_data.assign(v_num.begin(), v_num.end());
    cout << "v_num value is     ";
    for (auto &num : v_num)
    {
        cout << num << "\t";
    }
    cout << endl;
    cout << "v_data value is    ";
    for (auto &num : v_data)
    {
        cout << num << "\t";
    }
    cout << endl;
    v_num.assign(2, 4);
    cout << "v_num value is     ";
    for (auto var : v_num)
    {
        cout << var << "\t";
    }

在这里插入图片描述

inline int &std::vector<int>::at(size_t _Pos);

at函数和数组通过下脚标读取值是一样的.但是at比通过下角标读取的安全,因为如果超过vector最大值[]是不会报错的vector会向前读取,但是at会报错.

demo:

    cout << "v_num size = " << v_num.size() << endl;
    cout << "v_num[1] = " << v_num[3] << endl;
    cout << "v_num[1] = " << v_num.at(3) << endl;

在这里插入图片描述

front() back()

inline int &std::vector<int>::back(); // 返回最后一个值
inline int &std::vector<int>::front();	// 返回第一个值的引用
 cout << "v_data = " << v_data.back() << endl;

data

std::vector::data() 是 C++ 中的 STL,它返回一个指向内存数组的直接指针,该内存数组由向量内部用于存储其拥有的元素。

demo

    int *pos = v_data.data();
    cout << "pos = ";
    for (auto &num : v_data)
    {
        cout << *pos++ << "  ";
    }

在这里插入图片描述

size()、capacity()、resize()、reserve()

 size() // 返回向量的容量,是使用的容量
 capacity() // 返回真实向量的容量
 capacity() - size() // 未使用的容量
resize,即重置容器空间。当设置值小于当前容器空间时,会将目前容器中超出设置值的空间释放掉;当设置值大于当前容器空间时,会在当前空间的基础上增加容量。
reserve,即预留容器空间。当设置值大于当前容器空间时,会增加当前容器空间的大小

begin() cbegin() crbegin() end() crend() cend()

返回的迭代器,cbegin是const的不能改变. crbegin()是从后向前 c是const, r是从后向前.

clear()

清空数据.

empty()

判断是否为空,如果为空返回true 不为空返回false.

插入函数 emplace() 和 insert()

在这里插入图片描述

emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。再次强调,emplace() 每次只能插入一个元素,而不是多个。

erase

iterator erase(iterator position); //删除指定位置position的元素,并返回删除元素的下一个元素的迭代器
iterator erase(iterator first, iterator last);//删除从first到last(不包过last)之间的元素 [first,last),并返回last位置迭代器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/973748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

长胜证券:创业板上市容易吗?

创业板是我国股市的一个板块&#xff0c;特点是适合一些新式企业在股市进行融资。与A股比较&#xff0c;创业板上市门槛相对较低&#xff0c;整个上市过程相对简单和方便&#xff0c;似乎对于草创企业来说十分有利。但是&#xff0c;实际上&#xff0c;创业板上市虽然相对简单&…

陶氏公司将出席2023第二届中国汽车碳中和峰会

2023第二届中国汽车碳中和峰会将于10月19日-20日在上海举办。 本次峰会将为行业领导者、政策制定者和专家提供一个平台&#xff0c;讨论汽车行业减少碳排放的策略。专家们将从政策、供应链、ESG、替代能源解决方案、汽车材料创新、法律等不同领域分享碳中和与可持续策略。 通…

HDFS HA 高可用集群搭建详细图文教程

目录 一、高可用&#xff08;HA&#xff09;的背景知识 1.1 单点故障 1.2 如何解决单点故障 1.2.1 主备集群 1.2.2 Active、Standby 1.2.3 高可用 1.2.4 集群可用性评判标准&#xff08;x 个 9&#xff09; 1.3 HA 系统设计核心问题 1.3.1 脑裂问题 1.3.2 数据状…

项目(智慧教室)第三部分,人机交互在stm32上的实现

一。使用软件 1.stm32cubemx中针对汉字提供的软件 2.对数据进行处理 2.上面点击ok--》这里选择确定 3.这里选择保存即可由字符库&#xff0c;但是需要占用内存太大&#xff0c;需35M&#xff0c;但是stm32只有几百k&#xff0c;所以需要自己删减。 生成中文字符&#xff08;用…

UML基础

统一建模语言&#xff08;UML是 Unified Modeling Language的缩写, 是用来对软件系统进行可视化建模的一种语言。UML为面向对象开发系统的产品 进行说明、可视化、和编制文档的一种标准语言。 共有9种图 UML中的图其实不止九种 (相同的图还可能会有不同的名称), 这里的九种图是…

写字楼远程预付费抄表系统

写字楼远程预付费抄表系统是一种现代化的智能抄表解决方案&#xff0c;具有许多优点&#xff0c;例如&#xff1a;提高抄表效率&#xff0c;降低人力成本&#xff0c;减少误差&#xff0c;防止偷漏电等问题。下面就由小编来为大家来讲解下写字楼远程预付费抄表系统吧&#xff0…

2023年动力电池回收行业研究报告

第一章 行业概况 1.1 定义 动力电池&#xff0c;通常指用于驱动电动车辆&#xff08;包括电动汽车、电动自行车、电动滑板车等&#xff09;的电池。这类电池需要具备高能量密度&#xff08;以便在较小的空间和重量下提供更多的能量&#xff09;、高功率密度&#xff08;以便在…

vue3中TCplayer应用

环境win10:vitevue3elementUI 1 安装 npm install tcplayer.js2 使用 <template><div><video id"player-container-id" width"414" height"270" preload"auto" playsinline webkit-playsinline></video>&l…

01-数据类型和转换

数据 定义&#xff1a;对现实生活中事物的抽象描述&#xff0c;在程序世界中一切都采用数据进行描述&#xff0c;程序的执行实际上就是对数据的操作。数据是存储在内存和硬盘中的。 数据类型 基本数据类型&#xff1a; 数字&#xff08;number)、字符串&#xff08;string&…

基于AI识别与视频监控技术的土地建设履约全周期监管方案

一、项目背景 当前&#xff0c;各级政府正在积极大力推进土地节约集约利用工作&#xff0c;不断推动工业用地提质增效。但是&#xff0c;持续推进土地节约集约利用也面临着一些新情况、新问题&#xff0c;比如&#xff0c;在工业用地批后监管机制还不够健全&#xff0c;存在项…

无涯教程-JavaScript - DVARP函数

描述 DVARP函数通过使用列表或数据库中符合您指定条件的记录的字段(列)中的数字,基于整个总体计算总体的方差。 语法 DVARP (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的…

2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本

一、原生的读取版本接口是/proc/version&#xff0c;我这里需要提供获取固件版本号的api给app&#xff0c;因为版本号会经常需要修改&#xff0c;如果每次都到kernel下修改比较麻烦&#xff0c;我这里是想在编译脚本里面对版本号进行修改&#xff0c;这样方便一点。 二、主要修…

实验三十二、OCL电路的研究

一、题目 仿真电路如图1所示。利用 Multisim 研究下列问题&#xff1a; &#xff08;1&#xff09;负载 R 6 R_6 R6​ 上能获得的最大输出功率&#xff1b; &#xff08;2&#xff09;电容 C 1 C_1 C1​、 C 2 C_2 C2​ 的作用&#xff1b; &#xff08;3&#xff09;当输入…

基于ebpf的性能工具-bpftrace实战(内存泄漏)

在之前的篇章中&#xff0c;我们已经详细阐述了bpftrace的操作原理&#xff0c;以及其脚本语法的特点。在本文中&#xff0c;我们将通过实际案例展示bpftrace这一强大工具的实际应用&#xff0c;以便更加深入地理解其在解决问题中的价值。 基于ubuntu22.04-深入浅出 eBPF 基于e…

Python测试框架 Pytest —— mock使用(pytest-mock)

pytest-mock 安装&#xff1a;pip install pytest-mock 这里的mock和unittest的mock基本上都是一样的&#xff0c;唯一的区别在于pytest.mock需要导入mock对象的详细路径。 # weateher_r.py class Mock_weather():def weather(self):天气接口passdef weather_result(self):模…

内网穿透:FRP(Forwarding Remote Proxy)反向代理

frp 是一个可用于内网穿透的高性能的反向代理应用&#xff0c;支持 tcp, udp 协议&#xff0c;为 http 和 https 应用协议提供了额外的能力&#xff0c;且尝试性支持了点对点穿透 下载地址 https://github.com/fatedier/frp/releases 选择最新的就行&#xff0c;linux和windo…

TCP机制之连接管理(三次握手和四次挥手详解)

TCP的连接管理机制描述了连接如何创建以及如何断开! 建立连接(三次握手) 三次握手的过程 所谓建立连接就是通信双方各自要记录对方的信息,彼此之间要相互认同;这里以A B双方确立男女朋友关系为例: 从图中可以看出,通信双方各自向对方发起一个"建立连接"的请求,同时…

Spring Security 安全框架NOTE

目录 1、什么是 Spring Security 安全框架? 2、关于 SpringSecurity 中的认证 3、关于 SpringSecurity 中的授权 3.1 从数据库中查询用户的权限信息 4、关于自定义失败处理 5、跨域问题 前提引入&#xff1a; 随着科技的完善&#xff0c;现在几乎所有的网站以及软件都需…

为大模型添加记忆体,GBASE南大通用驶入向量赛道

大数据产业创新服务媒体 ——聚焦数据 改变商业 理解、生成、逻辑、记忆是人工智能的四大核心能力。 一段人类的日常对话通常可以分解为引子、记忆、分析三个部分。计算机自然语言处理的解法&#xff0c;AI科学家归纳出一个CPV结构&#xff1a;以ChatGPT为代表的大模型承担“分…

Vmware 网络恢复断网和连接

如果你的 虚拟机无法联网了&#xff0c;比如&#xff1a; vmware 无法将网络更改为桥接状态: 没有未桥接的主机网络适配器 等各种稀奇古怪的问题&#xff1b; 按照下面操作 还远默认设置 包你解决各种问题&#xff01;