蓝桥杯简单STL

目录

vector

vector定义

vector访问

常用函数

size()

​编辑

push_back(num)

pop_back()

clear

迭代器(iterator))

迭代器定义

遍历数组示例

[insert(it, element)](#insert(it, element))

erase(it)


标准模板库--STL,它包含了多种预定义的容器、算法和迭代器,极大地简化了编程工作。简单的说就是有了一些可以直接用的函数。

vector

vector是C++标准模板库(STL)中提供的一种模板类,它代表了一个可以动态调整大小的数组,

在编程中,我们通常称之为"变长数组",意味着其长度可以根据需要自动增长或缩小。

变长数组,在C语言中定义数组的时候int arr[100],中括号里面的必须是一个常量,当我们不知道数组的大小的时候,用C语言就不是很方便。

在使用vector加一个头文件就可以---------#include<vector>

vector定义

vector的定义语法

**vector<typename> name;**这个只是定义了一个数组,长度未知,数组中的数字默认为0

**vector<typename> name(n);**这个数组长度为n,数组中数字为0

**vector<typename> name(n,num);**这个数组长度为n,数组中每个数字为num

vcctor的使用示例:

定义一个整数类型的vector------vector<int>name;

定义一个双精度浮点数类型的vector------vcctor<double>name;

定义一个字符类型的vector------vector<char>name;

定义一个结构体类型的vector------vector<node>name;(其中node是已定义的结构体类型)

cpp 复制代码
#include<iostream>
#include<vector> 
using namespace std;
int main()
{
	int n;
	cin>>n;
	vector <int>arr(n);
	for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';
	return 0;
 } 

vector访问

vector访问可以像C语言那样用下标访问------arr[i];

常用函数

push_back(element)------向vector的末尾添加一个新元素。

pop_back()------删除vector中的最后一个元素。

size()------返回vector中元素的个数

clear()------删除vector中的所有元素,使其变为空。

insert(it, element)------在指定的迭代器位置插入一个新元素。

erase(it)------删除指定迭代器位置的元素。

size()

输出数组的元素个数

cpp 复制代码
 #include<iostream>
#include<vector> 
using namespace std;
int main()
{
	int n;
	cin>>n;
	vector <int>arr;
	for(int i=0;i<n;i++)arr.push_back(i);
	cout<<"元素个数:"<<arr.size()<<endl; 
	return 0;
 } 

push_back(num)

直接在末尾加如num这个数字

cpp 复制代码
#include<iostream>
#include<vector> 
using namespace std;
int main()
{
	int n;
	cin>>n;
	vector <int>arr;
	for(int i=0;i<n;i++)arr.push_back(i);
	cout<<"元素个数:"<<arr.size()<<endl; 
	cout<<"输出元素:"; 
	for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';
	return 0;
 } 

pop_back()

作用是删除最后的元素

cpp 复制代码
 #include<iostream>
#include<vector> 
using namespace std;
int main()
{
	int n;
	cin>>n;
	vector <int>arr;
	for(int i=0;i<n;i++)arr.push_back(i);
	cout<<"元素个数:"<<arr.size()<<endl; 
	cout<<"输出元素:"; 
	for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';
	 
	
	arr.pop_back();
	cout<<endl<<"pop_back()一次之后"<<endl;  
	cout<<"元素个数:"<<arr.size()<<endl;
	cout<<"输出元素:"; 
	for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';
	return 0;
 } 

clear

cpp 复制代码
#include<iostream>
#include<vector> 
using namespace std;
int main()
{
	int n;
	cin>>n;
	vector <int>arr;
	for(int i=0;i<n;i++)arr.push_back(i);
	cout<<"元素个数:"<<arr.size()<<endl; 
	cout<<"输出元素:"; 
	for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';
	 
	
	arr.clear();
	cout<<endl<<"clear()"<<endl;  
	cout<<"元素个数:"<<arr.size()<<endl;
	cout<<"输出元素:"; 
	for(int i=0;i<arr.size();i++)cout<<arr[i]<<' ';
	return 0;
 } 

在介绍后两个函数之前先来了解一下迭代器

迭代器(iterator)

迭代器,我之前的理解就是循环,其实不是的,专业点来说迭代器是一个变量,指向容器(例如数组-vector,字符串-string)的元素的一个变量,"指向"是不是有些耳熟,从这看,迭代器和指针类似

这里我们就介绍一下正向迭代器

迭代器定义

容器类名::iterator 迭代器名;

例如:vector<int>::iterator p

此时p就相当于就相当于指针,我们可以给p进行指向;

遍历数组示例

begin()是获得数组开始的元素

end()是获得数组结尾的那个元素

cpp 复制代码
 #include<iostream>
 #include<vector>
 using namespace std;
 int main()
 {
 	int n;
	cin>>n;
	vector <int>arr;
	for(int i=0;i<n;i++)arr.push_back(i);
	//定义迭代器 
	vector<int>::iterator p=arr.begin();
	for(int i=0;i<arr.size();i++)
	{
		cout<<*(p+i)<<' ';
	}
 	return 0;
 }

insert(it, element)

insert(it, element)------在指定的迭代器位置插入一个新元素 (其中it是迭代器的所指的位置,element是要插入的元素)

假设:我们想在数组的第4个未知插入10;

begin()是获得第一个元素,后面加上数字几,就往后移动几个元素

cpp 复制代码
 #include<iostream>
 #include<vector>
 using namespace std;
 int main()
 {
 	int n;
	cin>>n;
	vector <int>arr;
	for(int i=0;i<n;i++)arr.push_back(i);
	//定义迭代器 
	vector<int>::iterator p=arr.begin();
	cout<<"插入前"<<endl;
	cout<<"数组元素个数:"<<arr.size()<<endl; 
	cout<<"数组元素:";
	for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';
	
	//定义一个迭代器
	vector<int>::iterator p3=arr.begin()+3;
	arr.insert(p3,10); 
	
	cout<<endl<<"插入后"<<endl;
	cout<<"数组元素个数:"<<arr.size()<<endl; 
	cout<<"数组元素:";
	for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';
 	return 0;
 }

erase(it)

erase(it)------删除指定迭代器位置的元素。

假设要删除第5个位置的元素

cpp 复制代码
 #include<iostream>
 #include<vector>
 using namespace std;
 int main()
 {
 	int n;
	cin>>n;
	vector <int>arr;
	for(int i=0;i<n;i++)arr.push_back(i);
	//定义迭代器 
	vector<int>::iterator p=arr.begin();
	cout<<"删除前"<<endl;
	cout<<"数组元素个数:"<<arr.size()<<endl; 
	cout<<"数组元素:";
	for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';
	
	//定义一个迭代器
	vector<int>::iterator p3=arr.begin()+4;
	arr.erase(p3); 
	
	cout<<endl<<"删除后"<<endl;
	cout<<"数组元素个数:"<<arr.size()<<endl; 
	cout<<"数组元素:";
	for(int i=0;i<arr.size();i++)	cout<<*(p+i)<<' ';
 	return 0;
 }
相关推荐
风等雨归期几秒前
【python】【绘制小程序】动态爱心绘制
开发语言·python·小程序
千穹凌帝3 分钟前
SpinalHDL之结构(二)
开发语言·前端·fpga开发
AlexMercer10126 分钟前
【C++】二、数据类型 (同C)
c语言·开发语言·数据结构·c++·笔记·算法
friklogff7 分钟前
【无标题】云端之C#:全面解析6种云服务提供商的SDK
开发语言·flask·c#
Reese_Cool20 分钟前
【C语言二级考试】循环结构设计
android·java·c语言·开发语言
海里真的有鱼21 分钟前
Spring Boot 项目中整合 RabbitMQ,使用死信队列(Dead Letter Exchange, DLX)实现延迟队列功能
开发语言·后端·rabbitmq
zxctsclrjjjcph37 分钟前
【C语言】常见的C语言概念
c语言·开发语言
小灰灰爱代码42 分钟前
C++——求3个数中最大的数(分别考虑整数、双精度数、长整数的情况),用函数模板来实现。
开发语言·c++·算法
Eiceblue1 小时前
Python 复制Excel 中的行、列、单元格
开发语言·python·excel
项目題供诗1 小时前
尚品汇-秒杀商品存入缓存、Redis发布订阅实现状态位(五十一)
开发语言·php