【C++】vector的使用

目录

  • 1.什么是vector
  • 2.容量操作
  • 3.增删查改
  • 4.杨辉三角(使用vector开辟二维数组)

1.什么是vector

vector就是一个动态顺序表,比起string,它不仅可以存储字符,还可以存储其他的内置类型以及自定义类型。
vector在使用时,通过类模板的实例化来改变其存储的元素类型:

void test4()
{vector<int> v1;vector<char> v2;vector<std::string> v3;std::string s("abc");v1.push_back(1);v2.push_back('a');v3.push_back(s);
}

2.容量操作

2.1 reserve和resize
这两个函数在vector中与string中的作用是相同的
下面仅作演示:

void test5()
{vector<int> v1;cout << v1.capacity() << endl;v1.reserve(10);cout << v1.capacity() << endl;v1.resize(15, 3);cout << v1.capacity() << endl;for (auto e : v1){cout << e << " ";}cout << endl;
}

在这里插入图片描述

size():获取数据个数
capacity():获取容量大小
empty():判断是否为空

3.增删查改

在vector中插入只有push_back和insert,没有append和+=。其中insert的用法与string中有些不同,参数pos的类型是迭代器类型,不能传下标。

void test6()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.insert(v.begin()+1, 30);for (auto e : v){cout << e << " ";}cout << endl;
}

在这里插入图片描述

insert更多是搭配find一起使用,这个find是算法库中的,需要包头文件algorithm
在这里插入图片描述

void test7()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);vector<int>::iterator pos = std::find(v.begin(), v.end(), 3);v.insert(pos, 30);for (auto e : v){cout << e << " ";}cout << endl;
}

在这里插入图片描述
erase中的pos参数类型也是迭代器类型;

void test7()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);vector<int>::iterator pos = std::find(v.begin(), v.end(), 3);v.erase(pos);for (auto e : v){cout << e << " ";}cout << endl;v.erase(v.begin() + 1, v.end());for (auto e : v){cout << e << " ";}cout << endl;
}

在这里插入图片描述
assign会将vector中的数据全部删除,然后用新的内容覆盖。
在这里插入图片描述

void test8()
{string str("abcdefg");vector<char> v;v.assign(str.begin() + 1, str.end() - 2);for (auto e : v){cout << e << " ";}cout << endl;v.assign(5, 'a');for (auto e : v){cout << e << " ";}cout << endl;v.assign(str.begin() + 1, str.end() - 2);for (auto e : v){cout << e << " ";}cout << endl;
}

在这里插入图片描述
operator[]和at:
operator[]越界访问直接报错
at越界访问报异常

4.杨辉三角(使用vector开辟二维数组)

https://leetcode.cn/problems/pascals-triangle/
在这里插入图片描述
用vector开辟二维数组相比malloc要简单许多,首先要创建一个元素类型为vector类型的vector,然后用resize初始化即可。

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> vv;vv.resize(numRows, vector<int>());		// 使用匿名对象初始化,会自动调用vector的构造函数for (int i = 0; i < vv.size(); ++i){vv[i].resize(i+1, 0);				// 给每一个vector<int>初始化vv[i][0] = vv[i][vv[i].size()-1] = 1;// 将每一行的最左端和最右端的数设定为1for (int j = 1; j < vv[i].size(); ++j){if (vv[i][j] == 0){vv[i][j] = vv[i-1][j] + vv[i-1][j-1];}}}return vv;}
};

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

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

相关文章

Maven jar 包下载失败问题处理【配置Maven国内源】

前言 很多同学在Maven里下载一些依赖的时候&#xff0c;即下载【jar 包】的时候总是会出现一些问题&#xff0c;这里专门做一个教程讲解一下 其实这和你的Maven配置是有关系的&#xff0c;因为Maven是一个国际站点&#xff0c;它的仓库是在国外的&#xff0c;所以我们有时候在下…

易语言零基础新手入门系列教程 第一课

机器人小鑫易语言源码&#xff08;作业用&#xff09;&#xff1a; 机器人小鑫源码 - 第一课.zip 视频教程文字版&#xff1a; 新手学习易语言的几点建议 1、由浅入深、由易到难、循序渐进&#xff0c;切勿急功近利&#xff0c;想一步登天&#xff01; 这是学习的一般规…

是否想过中文编程呢?易语言使用的体验和感想

对于很多自以为英语不好就不能学好编程的童鞋来说&#xff0c;其实编程和英语真的不是那么的紧密&#xff0c;易语言可能是一种不错的选择。这里我们来体验一下&#xff0c;和其他语言做一下对比。 一、变量的声明 易语言中用ctrll和ctrlG来声明局部和全局变量&#xff0c;代码…

这次,易语言彻底“输了”,而另一新式中文编程却胜券在握

20多年来&#xff0c;饱受诟病的易语言 众多编程语言中&#xff0c;python、C、C语言、Java等&#xff0c;脱颖而出。但有一门冷门的编程语言&#xff0c; 大多数人可能听都没听过&#xff0c;它就是易语言。 什么是易语言啊&#xff1f;听起来好陌生。 笔者“深扒”了一下&…

易语言脚本开发入门教程

天蓝易语言脚本入门开发系列教程第1讲初识易语言 天蓝易语言脚本入门开发系列教程第2课简单控件变量 天蓝易语言脚本入门开发系列教程第3讲简单登录器制作 天蓝易语言脚本入门开发系列教程第4讲计算器实现 天蓝易语言脚本入门开发系列教程第5讲时钟随机数 天蓝易语言脚本入门开…

易语言学习笔记——基础篇

易语言学习笔记20180710 一、 易语言的数据类型可以分为基本数据类型和特殊数据类型 1. 其中基本数据类型分为&#xff1a; ① 数值型 ② 逻辑型 ③ 日期时间型 ④ 文本型 ⑤ 字节集型 ⑥ 子程序指针型 2. 然后基本数据类型中的数值类型有包含了&a…

易语言简介

易语言&#xff08;EPL&#xff09;是一门以中文作为程序代码编程语言&#xff0c;其以“易”著称&#xff0c;创始人为吴涛。易语言早期版本的名字为E语言。其最早的版本的发布可追溯至2000年9月11日。创造易语言的初衷是进行用中文来编写程序的实践&#xff0c;方便中国人以中…

“易语言.飞扬”十分钟入门教程

“易语言.飞扬”十分钟入门教程 作者&#xff1a;liigo 2007.1.1 原文链接&#xff1a;http://blog.csdn.net/liigo/archive/2007/01/01/1472077.aspx 转载必须注明出处&#xff1a;http://blog.csdn.net/liigo 第 1 分钟&#xff1a;序曲 第 2 分钟&#xff1a;“易语言.飞…

《MYSQL必知必会》读书笔记1

目录 行 主键 MYSQL工具 使用MYSQL 连接 检索数据 检索&#xff08;SELECT&#xff09; 限制结果&#xff08;LIMIT&#xff09; 排序检索&#xff08;ORDER BY&#xff09; 过滤数据&#xff08;WHERE&#xff09; 过滤数据&#xff08;AND、OR&#xff09; 通配符…

【SpringCloud】SpringAMQP

文章目录 1、AMQP2、基本消息模型队列3、WorkQueue模型4、发布订阅模型5、发布订阅-Fanout Exchange6、发布订阅-DirectExchange7、发布订阅-TopicExchange 1、AMQP Advanced Message Queuing Protocol&#xff0c;高级消息队列协议。是用于在应用程序之间传递业务消息的开放标…

黑马Redis视频教程实战篇(一)

目录 一、短信登录 1.1、导入黑马点评项目 &#xff08;1&#xff09;导入黑马点评sql脚本 &#xff08;2&#xff09;导入后端项目 &#xff08;3&#xff09;导入前端项目 1.2、基于Session实现登录流程 1.3 、实现发送短信验证码功能 1.4 、实现登录拦截功能 1.5 、隐…

创建第一个.NET MAUI应用

1.打开VS2022,创建新项目,并选择.NET MAUI应用,然后点击下一步 2.输入项目相关配置,然后点击下一步 3. 选择框架版本,然后点击创建 4.项目创建成功后会自动打开概述页 5.平台框架切换 6.启动应用,如有下图提示,启动开发者模式 成功启动应用 7.修改应用 修改MainPage.xml如下图…

阿里直播平台面临的技术挑战

大流量、高并发场景下&#xff0c;大型直播的技术挑战一般体现在如下几个方面&#xff1a; 视频流的处理、分发 播放质量保障 视频可用性监控 超大直播间实时弹幕及聊天互动 高性能消息通道 内容控制&#xff0c;如算法鉴黄、文本过滤 系统可用性、稳定性保障 本文将针对其中的…

龙珠直播php,斗鱼、全民TV、龙珠等直播平台排行榜 看视频直播发展趋势

从2015年下半年起&#xff0c;视频直播市场便显露出了火爆之势。除了越来越多的人喜欢观看、愿意参与直播之外&#xff0c;直播类 App也如雨后春笋般不断涌出。 而2016年&#xff0c;视频直播领域更是出现了火爆场面&#xff0c;尤其是刚刚过去的一个月&#xff1a;先是卷土重来…

短视频和直播,哪个会火得更久呢

短视频和直播&#xff0c;哪个会火得更久呢 曾经&#xff0c;电视剧和综艺节目是人们在工作之余放松的主要方式&#xff0c;目前越来越多的电视剧和网剧依靠着当红明星、大 IP 能够在前期获得大量的热度&#xff0c;但在播出之后收视率往往不理想。随着时间的增长&#xff0c;…

怎么创建直播平台

现在直播应用非常火爆&#xff0c;它以生动直观的方式向用户传达最真实的现场信息&#xff0c;受到广大用户的普遍欢迎。小编作为一名技术人员&#xff0c;经常开发各种直播平台&#xff0c;&#xff08;娱乐直播、游戏直播、教育直播、财经直播等&#xff09;下面我把自己积累…

关于linux的ssh(出现的问题以及ubuntu的ssh配置和ssh连接超时问题)

目录 Ubuntu进行ssh连接 关于ssh报错排错 备注&#xff1a;防火墙和selinux可能对ssh连接存在限制&#xff0c;但是我在操作的时候并没对我照成影响 查看selinux状态 ssh_config和sshd_config的区别 Ubuntu进行ssh连接 1.首先需要安装SSH服务器&#xff0c;在ubuntu终端输…

matlab机器人画圆轨迹规划

在这里插入图片描述 function Untitled()clear;clc; L(1)Link([0 0.15055 0 pi/2]); L(2)Link([0 -0.115 0.246 0]); L(3)Link([0 0.1163 0.190 0]); L(4)Link([0 -0.1175 0 pi/2]); L(5)Link([0 0.1175 0 -pi/2]); L(6)Link([0 0.105 0 0]);ZU3SerialLink(L,name,JAKA Z…

Ps制造图标

&#xff08;作者&#xff1a;翟正兴&#xff0c;撰写时间&#xff1a;2019年6月17日&#xff09; 首先我们打开ps新建一个文档 &#xff0c;然后在文档里面用椭圆工具画一个圆出来&#xff0c;画圆的时候把填充禁掉&#xff0c;把描边大小调成30像素首先我们打开ps新建一个文档…

怎么用PS软件图层样式制作图标

1. 2.圆角60px 3. 4.添加图层样式【渐变叠加】 5. 添加【斜面和浮雕】 6. 7.再画一个圆角矩形并添加【图层样式】【渐变叠加】【描边】 8.画圆再次添加【图层样式】【渐变叠加】【内阴影】 9.画圆形并填充黑色【图层样式】【描边】 10. 11.复制圆形最后得到效果图 编辑&#xf…