C/C++教程

C++STL练习

本文主要是介绍C++STL练习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

A - Vector

题目链接:

https://vjudge.net/contest/484569#problem/A

方法:

使用C++中的vector

其中含有的函数及作用:

vector():创建一个空vector
vector(int nSize):创建一个vector,元素个数为nSize
vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t
vector(const vector&):复制构造函数
vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中
void push_back(const T& x):向量尾部增加一个元素X
iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
iterator insert(iterator it,const_iterator first,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
iterator erase(iterator it):删除向量中迭代器指向元素
iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
void pop_back():删除向量中最后一个元素
void clear():清空向量中所有元素
reference at(int pos):返回pos位置元素的引用
reference front():返回首元素的引用
reference back():返回尾元素的引用
iterator begin():返回向量头指针,指向第一个元素
iterator end():返回向量尾指针,指向向量最后一个元素的下一个位置
reverse_iterator rbegin():反向迭代器,指向最后一个元素
reverse_iterator rend():反向迭代器,指向第一个元素之前的位置
bool empty() const:判断向量是否为空,若为空,则向量中无元素
int size() const:返回向量中元素的个数
int capacity() const:返回当前向量张红所能容纳的最大元素值
int max_size() const:返回最大可允许的vector元素数量值

题目代码:

点击查看代码
#include<bits/stdc++.h>
using namespace std;

vector <int>a;
int flag;
int q;

int main(){
	int p;
	int x;
	cin>>q;
	while(q--){
		cin>>flag;
		if(flag==0){
			cin>>x;
			a.push_back(x);
		}
		else if(flag==1){
			cin>>p;
			cout<<a[p]<<endl;
		}
		else{
			a.pop_back();
		}
		
	}
	
	return 0;
}

B - Deque

题目链接:

https://vjudge.net/contest/484569#problem/B

方法:

使用C++STL中的deque

其中具有的函数及作用:

deq[]:用来访问双向队列中单个的元素。
deq.front():返回第一个元素的引用。
deq.back():返回最后一个元素的引用。
deq.push_front(x):把元素x插入到双向队列的头部。
deq.pop_front():弹出双向队列的第一个元素。
deq.push_back(x):把元素x插入到双向队列的尾部。
deq.pop_back():弹出双向队列的最后一个元素。

代码:

点击查看代码
#include<bits/stdc++.h>
using namespace std;

deque<int>a;
int opt;

int main(){
	int q;
	int x;
	cin>>q;
	while(q--){
		cin>>opt;
		if(opt==0){
			int d;
			int x;
			cin>>d>>x;
			if(d==0){
				a.push_front(x);
			}
			else a.push_back(x);
		}
		if(opt==1){
			int p;
			cin>>p;
			cout<<a[p]<<endl;
		}
		if(opt==2){
			int d;
			cin>>d;
			if(d==0){
				a.pop_front();
			}
			else a.pop_back();
		}
	}
	
	return 0;
}

D - Vector II

题目链接:

https://vjudge.net/contest/484569#problem/D

方法:

和A题一样使用STL中的vector,需要注意输出时的方法

代码:

点击查看代码
#include<bits/stdc++.h>
using namespace std;

int main(){
	vector<int> a;
	int flag;
	int q;
	int n;
	int t;
	int x;
	cin>>n>>q;
	while(q--){
		cin>>flag;
		if(flag==0){
			cin>>t>>x;
			a.push_back(t,x);
		}
		if(flag==1){
			cin>>t;
			a.dump(t);
		}
		if(flag==2){
			cin>>t;
			a.clear(t);
		}
	}
	
	
	return 0;
}
这篇关于C++STL练习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!