STL--deque容器

1概念

1.1双向容器

在这里插入图片描述

1.2原理图

在这里插入图片描述

  • 中间插入的和删除的操作效率低
  • 可以随机存储 效率高

2常用API

2.1构造函数

在这里插入图片描述

void test1(){
	deque<int> d1;
	//符值10个5
	deque<int> d2(10,5);
	deque<int> d3(d2.begin(),d2.end());
	deque<int> d4(d3);

	for(deque<int>::iterator it=d4.begin();it!=d4.end();it++){
		cout<<*it<<" ";
	}
	cout<<endl;
}

2.2初始化函数

在这里插入图片描述

void test2(){
	deque<int> d1;
	deque<int> d2;
	deque<int> d3;
	d1.assign(10,5);
	d2.assign(d1.begin(),d1.end());
	d3=d2;
	d1.swap(d2);//交换两个空间的元素
}

2.3大小操作

在这里插入图片描述

2.4双端插入和删除操作

在这里插入图片描述

void test3(){
	deque<int> d1;
	d1.push_back(100);
	d1.push_front(200);
	d1.push_front(200);
	d1.push_front(200);
	int ret1=d1.back();
	d1.pop_back();
	int ret2=d1.front();
	d1.pop_front();

	for(deque<int>::iterator it=d1.begin();it!=d1.end();it++){
		cout<<*it<< " ";
	}		
}

2.5数据存储在这里插入图片描述

2.6插入操作

在这里插入图片描述

2.7 删除操作

在这里插入图片描述

3案例


#include<iostream>
#include<vector>
#include<string>
#include<deque>
#include<algorithm>
using namespace std;
class Player{
public:	
	Player(){}
	Player(string name,int sorce):mName(name),mSorce(sorce){}

	string mName;
	int mSorce;
};


void Create_play(vector<Player>& v){
	string name="abcde";
	for(int i=0;i<5;i++){
		Player p;
		p.mName+=name[i];
		p.mSorce=0;
		v.push_back(p);
	}
}
void PrintScore(int val){
	cout<<val<<" ";
}
void Set_Sorce(vector<Player>& v){
	for(vector<Player>::iterator it=v.begin();it!=v.end();it++){
		//对当前的学生的分da
		deque<int> dsorce;
		for(int ji=0;ji<10;ji++){
			int sorce=rand()%41+60;
			dsorce.push_back(sorce);
		}
		//排序
		sort(dsorce.begin(),dsorce.end());
		//for_each(dsorce.begin(),dsorce.end(),PrintScore);
		//cout<<endl;
		//去除最高分 去除最低分
		dsorce.pop_front();
		dsorce.pop_back();
		
		int totalsorce=0;
		for(deque<int>::iterator dit=dsorce.begin();dit!=dsorce.end();dit++){
			totalsorce+=*dit;
		}
		int avgsroce=totalsorce/dsorce.size();
		//保存分数
		(*it).mSorce=avgsroce;
	}
}
//排序规则
bool mycompare(Player& p1,Player& p2){
	
	return p1.mSorce<p2.mSorce;

}
//给选手排名
void Print_rank(vector<Player>& v){
	
	sort(v.begin,v.end(),mycompare);
	for(vector<Player>::iterator it=v.begin();it!=v.end();it++){
		cout<<"姓名:"<<(*it).mName<<" "<<"得分:"<<(*it).mName<<endl;
	}
}

int main(){

	//定义vector 保存选手信息
	vector<Player> vPlist;
	Create_play(vPlist);
	Set_Sorce(vPlist);
	Print_rank(vPlist);
	return 0;

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章