vector类的常用接口说明

news2024/11/18 0:13:20

目录

一、(constructor)构造函数声明

二、vector的迭代器

三、vector的增删改查

四、insert和erase,以及查找find(find不属于vector,是stl提供的算法)

五、三种遍历方式

六、源代码


vector是可变大小数组的序列容器

一、(constructor)构造函数声明

 

//构造
int TestVector1()
{
	//无参构造
	vector<int> v1;
	//构造并初始化n个val
	vector<int> v2(4, 100);
	//使用迭代器进行初始化构造
	vector<int> v3(v2.begin(), v2.end());
	//拷贝构造
	vector<int> v4(v3);
	return 0;
}

二、vector的迭代器

//迭代器
void PrintVector(const vector<int>& v)
{
	//遍历打印
	vector<int>::const_iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}
void TestVector2()
{
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	//遍历打印
	vector<int>::iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
	//修改
	it = v.begin();
	while (it != v.end())
	{
		*it *= 2;
		++it;
	}
	//使用反向迭代器进行遍历再打印
	vector<int>::reverse_iterator rit = v.rbegin();
	while (rit != v.rend())
	{
		cout << *rit << " ";
		++rit;
	}
	cout << endl;
	PrintVector(v);
}

三、vector的增删改查

void TestVector4()
{
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	auto it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;

	v.pop_back();
	v.pop_back();
	it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}

四、insert和erase,以及查找find(find不属于vector,是stl提供的算法)

void TestVector5()
{
	vector<int> v{ 1,2,3,4 };
	auto pos = find(v.begin(), v.end(), 3);
	if (pos != v.end())
	{
		v.insert(pos, 30);
	}
	vector<int>::iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
	pos = find(v.begin(), v.end(), 3);
	// 删除pos位置的数据
	v.erase(pos);

	it = v.begin();
	while (it != v.end()) {
		cout << *it << " ";
		++it;
	}
	cout << endl;

}

五、三种遍历方式

void TestVector6()
{
	vector<int> v{ 1,2,3,4 };
	//通过[]读写第0个位置
	v[0] = 10;
	cout << v[0] << endl;
	//使用for+[]方式遍历
	for (size_t i = 0; i < v.size(); ++i)
	{
		cout << v[i] << " ";
	}
	cout << endl;
	vector<int> swapv;
	swapv.swap(v);
//使用迭代器遍历
	auto it = swapv.begin();
	while (it != swapv.end())
	{
		cout << *it << " ";
		++it;
	}

	// 3. 使用范围for遍历
	for (auto x : v)
		cout << x << " ";
	cout << endl;
}

六、源代码

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
#include<vector>

//构造
int TestVector1()
{
	//无参构造
	vector<int> v1;
	//构造并初始化n个val
	vector<int> v2(4, 100);
	//使用迭代器进行初始化构造
	vector<int> v3(v2.begin(), v2.end());
	//拷贝构造
	vector<int> v4(v3);
	return 0;
}

//迭代器
void PrintVector(const vector<int>& v)
{
	//遍历打印
	vector<int>::const_iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}
void TestVector2()
{
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	//遍历打印
	vector<int>::iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
	//修改
	it = v.begin();
	while (it != v.end())
	{
		*it *= 2;
		++it;
	}
	//使用反向迭代器进行遍历再打印
	vector<int>::reverse_iterator rit = v.rbegin();
	while (rit != v.rend())
	{
		cout << *rit << " ";
		++rit;
	}
	cout << endl;
	PrintVector(v);
}
//尾插和尾删
void TestVector4()
{
	vector<int> v;
	v.push_back(1);
	v.push_back(2);
	v.push_back(3);
	v.push_back(4);
	auto it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;

	v.pop_back();
	v.pop_back();
	it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
}
void TestVector5()
{
	vector<int> v{ 1,2,3,4 };
	auto pos = find(v.begin(), v.end(), 3);
	if (pos != v.end())
	{
		v.insert(pos, 30);
	}
	vector<int>::iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		++it;
	}
	cout << endl;
	pos = find(v.begin(), v.end(), 3);
	// 删除pos位置的数据
	v.erase(pos);

	it = v.begin();
	while (it != v.end()) {
		cout << *it << " ";
		++it;
	}
	cout << endl;

}
void TestVector6()
{
	vector<int> v{ 1,2,3,4 };
	//通过[]读写第0个位置
	v[0] = 10;
	cout << v[0] << endl;
	//使用for+[]方式遍历
	for (size_t i = 0; i < v.size(); ++i)
	{
		cout << v[i] << " ";
	}
	cout << endl;
	vector<int> swapv;
	swapv.swap(v);
//使用迭代器遍历
	auto it = swapv.begin();
	while (it != swapv.end())
	{
		cout << *it << " ";
		++it;
	}

	// 3. 使用范围for遍历
	for (auto x : v)
		cout << x << " ";
	cout << endl;
}
int main()
{
	TestVector1();
	TestVector2();
	TestVector4();
	TestVector5();
	TestVector6();

	return 0;
}

 拜拜啦,又是朝着money奋斗的一天!

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

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

相关文章

海豚调度器分布式部署

前置准备 服务器 node01,node02,node03三台服务器&#xff08;本教程服务器系统版本Linux version 3.10.0-1160.el7.x86_64&#xff09; node01作为master&#xff0c;api&#xff0c;alert节点&#xff0c;node02和node03作为worker节点 安装包下载 下载dolphinscheduler和…

RFID数据采集成为MES系统精准数据

随着信息化、自动化成为企业发展趋势&#xff0c;制造执行系统(MES)是连接计划层和现场控制层之间的纽带&#xff0c;成为企业制造战略重要技术手段。MES生产执行系统主要在生产过程层及管理层之间加强数据集成与分析的力度&#xff0c;拓展优化技术应用的范围&#xff0c;真正…

猿创征文|Python学习工具千千万,我心中的TOP10

前言&#xff1a; 大家好&#xff0c;我是是Dream呀&#xff0c;在我们平时的开发和生活中&#xff0c;每天都在使用、寻找、贡献、创作各类开发者工具&#xff0c;包括开源服务、付费软件、API等。好的工具可以极大帮助我们提升效率&#xff0c;服务业务。作为一名资深的Pytho…

MFC下拉框控件用法

目录 一、属性方式设置下拉框内容 1.Combo Box下拉框 2.Data属性 3.Type属性 4.Sort属性 二、初始化OnInitDialog设置下拉框内容 1.添加Combo Box下拉框变量 2.AddString方法添加选项 3.SetCurSel设置默认显示内容 4.InsertString方法插入内容 4.DeleteString删除指…

数据中心网络设计- 叶脊(Spine-Leaf)网络架构

大家好&#xff0c;我是技福的小咖老师。 随着业务形态的变化&#xff0c;数据中心网络的交换架构也在不断的发展。传统的三层网络结构应用广泛而且技术成熟&#xff0c;但随着技术的发展趋势&#xff0c;它的瓶颈也不断涌现&#xff0c;导致越来越多的网络工程师放弃这种结构…

[附源码]计算机毕业设计JAVA校园一卡通管理信息系统台

[附源码]计算机毕业设计JAVA校园一卡通管理信息系统台 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM…

C#上位机系列(5)—示波器二基础代码+线条绘制

本文是讲解C#.net平台的Winform框架下的第四个内容&#xff0c;手把手介绍上位机项目的创建方式以及一些写软件时常用的功能&#xff0c;讲解从零开始的每一个步骤。 接上一节的介绍&#xff0c;本次内容为上位机项目中示波功能代码的基本函数和画图功能。 目的是通过几行代码…

【联邦学习】联邦学习量化——non-iid数据集下的仿真

文章目录改进项目背景量化函数的改进non-iid数据集的设置Fedlab划分数据集的踩雷改进项目背景 在前面的项目中&#xff0c;虽然对联邦学习中&#xff0c;各个ue训练出来的模型上传的参数进行了量化&#xff0c;并仿真的相关结果。但是仍有一些俺不是非常符合场景的情况&#x…

《Hive性能调优实战》读书笔记

很不错的一本书。章节划分清晰明了&#xff0c;可根据个人需要读相应的章节。Hive各个方面的知识体系都有涉及。可作为工具书&#xff0c;常读常新&#xff0c;值得翻阅。 第2章 Hive问题排查与调优思路 优化方法 PL-SQL和T-SQL经验总结&#xff1a; 通过改写SQL&#xff0…

Hust计算机组成原理实验

文章目录logisim的使用1.添加门电路2.添加引脚3.添加导线4.添加文本5.测试电路补充工具实验一&#xff0c;运算器实验8位串行可控加减法器分析一位全加器八位串行加法器即可给出8位串行可控加减法器回答问题CLA74182&#xff08;先行进位加法器&#xff09;参数公式问题位快速加…

10个最常见的JavaScript问题

如今&#xff0c;JavaScript几乎是所有现代web应用程序的核心。这就是为什么JavaScript问题以及找出导致这些问题的错误是web开发人员的首要任务。 用于单页应用程序&#xff08;SPA&#xff09;开发、图形和动画以及服务器端JavaScript平台的强大的基于JavaScript的库和框架并…

opencv c++ 二值图像、阈值计算方法、全局阈值、自适应阈值

1、图像定义&#xff1a; 彩色图像 &#xff1a;三通道&#xff0c;像素值一般为0~255&#xff1b; 灰度图像&#xff1a;单通道&#xff0c;像素值一般为0~255&#xff1b; 二值图像&#xff1a;单通道&#xff0c;像素值一般为0&#xff08;黑色&#xff09;、255&#xff08…

Python计算器(包含机制转换)

实现思路&#xff1a; 要优先处理内层括号运算&#xff0d;&#xff0d;外层括号运算&#xff0d;&#xff0d;先乘除后加减的原则&#xff1a; 1、正则处理用户输入的字符串&#xff0c;然后对其进行判断&#xff0c;判断计算公式是否有括号&#xff0c;有就先将计算公式进行…

判断二叉树是否是平衡二叉树(c#)

问题描述 给定一棵二叉树&#xff0c;判断其是否为平衡二叉树。 示例 示例1 Input: root [3,9,20,null,null,15,7] Output: true 示例2 Input: root [1,2,2,3,3,null,null,4,4] Output: false 解决方案描述 二叉树的每个节点的左子节点和右子节点的高度差小于等于1&#x…

Windows和Linux混合系统通过AD域实现用户集中认证

一、Windows AD域 1、统一认证简介 管理的Linux服务器和Windows服务器如果很多,如果都用本地用户名管理,要管理和记住几十台甚至上百台服务器的不同账号不同密码,这是很难的。但是如果所有服务器账号密码都设置一样,那又完全没有安全性可言。 什么是服务器的集中认证(统…

数据结构(8)树形结构——B树、B+树(含完整建树过程)

目录 8.1.B树 8.1.1.概述 8.1.2.完整建树过程 8.2.B树 8.1.B树 8.1.1.概述 B树存在的意义&#xff1a; 二叉树在存储数据时可能出现向一边倾斜导致查询效率降低的情况&#xff0c;为了防止二叉树的倾斜&#xff0c;出现了平衡二叉树&#xff0c;通过旋转的方式保证二叉树…

[附源码]计算机毕业设计springboot校园商铺

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计Django基于web的羽毛球管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

学生HTML个人网页作业作品 HTML+CSS+JavaScript环保页面设计与实现制作

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

【PPT计时器】如何在wps演示PPT中使用定时器、计时器功能?不使用第三方插件,仅仅使用第三方计时器软件

一、问题背景和解决思路 很多人在展示PPT时&#xff0c;有精确的时间要求&#xff0c;比如五分钟&#xff0c;十分钟。 这时候&#xff0c;我们希望在演示的时候&#xff0c;PPT上附带一个小计时器、或者定时器。 网上有很多加定时器动画的教程&#xff0c;大多数停留在动画…