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;

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