STL ---- vector 使用

单纯的使用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.hqwc.cn/news/98132.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7升级openssh版本

linux升级openssh版本&#xff0c;升级到8.6p1 小白教程&#xff0c;一看就会&#xff0c;一做就成。 1.下载rpm包 2.编写一键安装脚本&#xff08;然后执行&#xff09; #把所有的rpm包&#xff0c;我都放到了/ydy目录&#xff0c;下面安装时&#xff0c;也指定了这个目录 #编…

day-41 代码随想录算法训练营(19)动态规划 part 03

343.整数拆分 思路&#xff1a; 1.dp存储的是第i个数&#xff0c;拆分之后最大乘积2.dp[i]max(dp[i],max(j*(i-j),j*dp[i-j]));3.初始化&#xff1a;dp[0]dp[1]0,dp[2]1;4.遍历顺序&#xff1a;外层循环 3-n&#xff0c;内层循环 1-i 2.涉及两次取max&#xff1a; dp[i] 表…

LLMs之Code:SQLCoder的简介、安装、使用方法之详细攻略

LLMs之Code&#xff1a;SQLCoder的简介、安装、使用方法之详细攻略 目录 SQLCoder的简介 1、结果 2、按问题类别的结果 SQLCoder的安装 1、硬件要求 2、下载模型权重 3、使用SQLCoder 4、Colab中运行SQLCoder 第一步&#xff0c;配置环境 第二步&#xff0c;测试 第…

【RPC 协议】序列化与反序列化 | lua-cjson | lua-protobuf

文章目录 RPC 协议gRPCJSON-RPC 数据序列化与反序列化lua-cjsonlua-protobuf RPC 协议 在分布式计算&#xff0c;远程过程调用&#xff08;英语&#xff1a;Remote Procedure Call&#xff0c;缩写为 RPC&#xff09;是一个计算机通信协议。该协议允许运行于一台计算机的程序调…

横向对比 npm、pnpm、tnpm、yarn 优缺点

前端工程化是现代Web开发中不可或缺的一环&#xff0c;它的出现极大地提升了前端开发的效率和质量。 在过去&#xff0c;前端开发依赖于手动管理文件和依赖&#xff0c;这导致了许多问题&#xff0c;如版本冲突、依赖混乱和构建繁琐等。而今&#xff0c;随着众多前端工程化工具…

常见项目管理中npm包操作总结

前言 我们在日常工作中&#xff0c;可能需要下载包、创建包、发布包等等。本篇推文将记录日常项目中关于npm包的操作。 引用包 npm仓库公开的包我们都可以通过npm install的命令进行引用下载。 而我们开发的业务公共组件需要在公司内部项目公共引用&#xff0c;而不希望公开为外…

洞察商机,驱动创新:智能数据分析引领企业发展

“五度易链”产业大数据解决方案由产业经济、智慧招商、企业服务、数据服务四大应用解决方案组成&#xff0c;囊括了产业经济监测、产业诊断分析、企业监测预警、企业综合评估、大数据精准招商、招商智能管理、企业管理、企业培育、企业市场服务、企业金融服务、产业数据开放服…

docker 安装xxljob

1. 安装mysql镜像 2.初始化xxljob的数据库和表 一、初始化db:https://codechina.csdn.net/mirrors/xuxueli/xxl-job/-/blob/2.3.1/doc/db/tables_xxl_job.sql 对脚本进行修改&#xff0c;添加ROW_FORMATDYNAMIC 安装xxljob 镜像 docker pull xuxueli/xxl-job-admin:2.3.1 …

双亲委派机制的作用

文章目录 类加载过程一、java有哪些类加载器&#xff1f;二、双亲委派机制自定义String类 总结 类加载过程 先简单说一下java的类加载器 类加载器&#xff0c;顾名思义就是一个可以将Java字节码加载为java.lang.Class实例的工具。这个过程包括&#xff0c;读取字节数组、验证…

[Android AIDL] --- AIDL工程搭建

0 AIDL概念 AIDL&#xff08;Android Interface Definition Language&#xff09;是一种 IDL 语言&#xff0c;用于生成可以在 Android 设备上两个进程之间进行进程间通信&#xff08;IPC&#xff09;的代码。 通过 AIDL&#xff0c;可以在一个进程中获取另一个进程的数据和调…

尚硅谷大数据项目《在线教育之离线数仓》笔记006

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第11章 数仓开发之ADS层 P087 P088 P089 P090 P091 P092 P093 P094 P095 P096 P097 P098 P099 P100 P101 P102 P103 P104 P105 P106 P107 P108 P109 P110 P111 …

Layer 2盛夏已至,StarkNet如何实现价值跃迁?

作者&#xff5c;Jason Jiang Layer 2概念在2023年夏天迎来爆发。Coinbase、ConsenSys等加密巨头纷纷下场&#xff0c;其部署的原生L2解决方案Base、Linea在过去两个月内相继完成主网上线&#xff1b;被誉为L2 四大天王之一的StarkNet也在夏天顺利完成“量子跃迁”升级&#x…