欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STL--deque容器

程序员文章站 2024-02-11 17:03:04
...

1概念

1.1双向容器

STL--deque容器

1.2原理图

STL--deque容器

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

2常用API

2.1构造函数

STL--deque容器

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初始化函数

STL--deque容器

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大小操作

STL--deque容器

2.4双端插入和删除操作

STL--deque容器

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数据存储STL--deque容器

2.6插入操作

STL--deque容器

2.7 删除操作

STL--deque容器

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;

}
相关标签: STL stl