STLvector

$ Latex $ 懒得修

容器


例:string,stack,queue等

*新容器:vector


vector->动态数组,不需要定义大小

和数组的相同之处

1.下标一定从0开始

2.可以直接用数组名称 [要访问的长度] 进行访问

和数组的不同之处

1.进行输入的时候需要使用 数组名称.push_back(要输入的数值) 进行输入

2.在数组里没有元素的时候,vector数组直接访问会报错!

和vector有关的函数

1.resize() 使用方式:数组名.resize(重新分配的空间大小)

*注意resize()函数不会清空在vector里还包含着的值

*2.reverse() 使用方式:reverse(数组名称.begin(),数组名称.end());

*注意reverse()函数数组里面不能用!!!

特别注意

使用和vector有关的函数

例:

#include <bits/stdc++.h>
using namespace std;
vector <int> vec;
void print(vector <int> a){
	for(int i=0;i<=a.size();i++){
		cout<<a[i]<<' ';
	}
}
int main(){
	for(int i=0;i<=10;i++){
		vec.push_back(i);
	}
	print(vec);
	return 0;
}

输出↓

vector使用sort()函数

递增代码:

sort(数组名称.begin(),数组名称.end(),greater<数据类型>() );

递减代码:

sort(数组名称.begin(),数组名称.end(),less<数据类型>() );

或者递增之后翻转

sort(数组名称.begin(),数组名称.end(),greater<数据类型>() );

reverse(数组名称.begin(),数组名称.end());

vector 二维数组

情况1:行数确定,但列数不确定

vector<数据类型> 数组名称[行数];

情况2:行数和列数都不确定

vector<vector<数据类型> > 数组名称;


附加:迭代器(iterator)

前置知识:set(集合)

set真香之处:
放进去就自动排序、去重

实现样例代码(明明的随机数)

#include <bits/stdc++.h>
using namespace std;
set<int> s;
int n;
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		int t;
		cin>>t;
		s.insert(t);
	}
	set<int>::iterator iiiiiiiiiiiiii;
	for(iiiiiiiiiiiiii=s.begin();iiiiiiiiiiiiii!=s.end();iiiiiiiiiiiiii++){
		cout<<*iiiiiiiiiiiiii<<' ';
	}
	return 0;
}
posted @ 2023-08-30 18:28  Lost_Ycy  阅读(13)  评论(0)    收藏  举报