STL10-deque容器
生活随笔
收集整理的這篇文章主要介紹了
STL10-deque容器
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
deque 雙端隊(duì)列
?
deque 刪除操作
deque案例:
#if 1 #include<iostream> #include<deque> using namespace std; void PrintDeque(deque<int>& d) {for (deque<int>::iterator it = d.begin(); it != d.end(); it++) {cout << *it << " ";}cout << endl; } //deque初始化 void test01() {deque<int> d;deque<int> d2(10, 5);deque<int> d3(d2.begin(), d2.end());deque<int> d4(d3);//打印PrintDeque(d4); } /* 輸出: 5 5 5 5 5 5 5 5 5 5 *///賦值 大小操作 void test02() {deque<int> d1;deque<int> d2,d3,d4;d1.assign(10, 5);d4.assign(10, 4);d2.assign(d1.begin(), d1.end()); //迭代器指定區(qū)間賦值d3 = d2; //等號(hào)賦值cout << "未交換前的d1和d4:" << endl;PrintDeque(d1);PrintDeque(d4);swap(d1, d4);cout << "交換后的d1和d4:" << endl;PrintDeque(d1);PrintDeque(d4);if (d1.empty())cout << "d1 is empty!" << endl;elsecout << "d1 is not empty!" << endl;d1.resize(5); //后5個(gè)元素扔掉PrintDeque(d1);d1.resize(8); //以默認(rèn)值填充新位置PrintDeque(d1);d1.resize(10, 88); //容器變長(zhǎng),以88進(jìn)行填充PrintDeque(d1);} /* 輸出: 未交換前的d1和d4: 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 交換后的d1和d4: 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 d1 is not empty! 4 4 4 4 4 4 4 4 4 4 0 0 0 4 4 4 4 4 0 0 0 88 88 */ //deque插入和刪除 void test03() {deque<int> d1;d1.push_back(100);d1.push_front(200);d1.push_back(300);d1.push_back(400);d1.push_front(500);PrintDeque(d1);d1.pop_back();d1.pop_front();PrintDeque(d1); } /* 輸出: 500 200 100 300 400 200 100 300 */ int main() {cout<<"test01" << endl;test01();cout << "test02" << endl;test02();cout << "test03" << endl;test03(); } #endif打分案例:
#include<iostream> #include<vector> #include<deque> #include<algorithm> #include<string> using namespace std; //評(píng)委打分案例(sort) //創(chuàng)建5個(gè)選手,姓名,得分 10個(gè)評(píng)委對(duì)5個(gè)選手打分 //得分規(guī)則:去除最低分,去除最高分 去除平均分 //按得分對(duì)5名選手排名 #if 0 //我的思路 typedef struct Person { public:Person(double Score,char* Name):score(Score),name(Name){} public:double score;char* name; }; int main() {Person p1(0, "wang");Person p2(0, "yu");Person p3(0, "da");Person p4(0, "zhao");Person p5(0, "liu");vector<Person> v;v.push_back(p1);v.push_back(p2);v.push_back(p3);v.push_back(p4);v.push_back(p5);for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {cout << "請(qǐng)輸入對(duì)" << (*it).name << "的打分:" << endl;deque<double> d;for (int i = 0; i < 10; i++){while (cin.get() != EOF) //錯(cuò)誤{d.push_back(cin.get());}}//排序 去除左右兩端 然后去平均數(shù) 然后賦值給此選手的score 用map<Person,score>進(jìn)行排序}return 0; } #endif#if 1 class Player { public:Player(){}Player(double Score, string Name) :score(Score), name(Name) {} public:double score;string name; }; //創(chuàng)建選手 void Create_Player(vector<Player>& v) {string nameSpeed = "ABCDE";for (int i = 0; i < 5; i++){Player p;p.name = "選手";p.name += nameSpeed[i];p.score = 0;v.push_back(p);}} void PrintdScore(int val) {cout << val << " "; } //打分 void set_Score(vector<Player>& v){for (vector<Player>::iterator it = v.begin(); it != v.end(); it++) {string name=(*it).name;//當(dāng)前學(xué)生進(jìn)行打分deque<int> dScore;for (int i = 0; i < 10; i++){int score = rand() % 41 + 60;dScore.push_back(score);}sort(dScore.begin(), dScore.end()); //默認(rèn)從小到大for_each(dScore.begin(), dScore.end(), PrintdScore);cout << endl;//去除最高分 最低分dScore.pop_front();dScore.pop_back();//求平均分int totalScore = 0;for (deque<int>::iterator itt = dScore.begin(); itt != dScore.end(); itt++) {totalScore += (*itt);}int averageScore = totalScore / dScore.size();//保存分?jǐn)?shù)(*it).score = averageScore;}} //排序規(guī)則 bool mycompare(Player p1, Player p2) {return p1.score > p2.score; } //排名 sort默認(rèn)從小到大 希望從打到小 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).name <<"得分:"<<(*it).score<< endl;} } int main() {vector<Player> vPlist;Create_Player(vPlist);set_Score(vPlist);Print_Rank(vPlist);return 0; } #endif?
?
總結(jié)
以上是生活随笔為你收集整理的STL10-deque容器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VS2015+qt5.11入门(实现计算
- 下一篇: python自动控制程序_巧用 pyth