-
双向链表
#include<iostream> #include <string> #include <list> #include <functional> //less和greator头文件 using namespace std; void testBase(){ //操作基本数据类型 list<int> listNum; //插入 //尾插 listNum.push_back(1); listNum.push_back(2); listNum.push_back(3); //头插 listNum.push_front(5); listNum.push_front(6); listNum.push_front(7); //指定位置插入 auto result = find(listNum.begin(), listNum.end(), 2); listNum.insert(result, 4); //遍历 //不删除遍历 list<int>::iterator iter; for (iter = listNum.begin(); iter != listNum.end(); iter++) { cout << *iter << " "; } cout << endl; 删除遍历 //while (!listNum.empty()) //{ // cout << listNum.front() << " "; // listNum.pop_front(); //} //反转链表 listNum.reverse(); for (int v : listNum) { cout << v << " "; } cout << endl; //排序 sort 默认由小到大排列 less由小到大排列 greater由大到小排列 listNum.sort(greater<int>()); for (int v : listNum) { cout << v << " "; } cout << endl; //删除所有指定元素 int array[5] = { 1,3,3,4,3 }; list<int>listData; listData.assign(array, array + 5); for (list<int>::iterator iter = listData.begin(); iter != listData.end();) { if (*iter == 3) { iter = listData.erase(iter);//erase()返回下一个迭代器 } else { iter++; } } for (auto v : listData) { cout << v << " "; } cout << endl; } class Student { public: Student(string name = "",int stuNum=0,int score=0):name(name),stuNum(stuNum),score(score){} void print() { cout << name << "\t" << stuNum << " \t" << score << endl; } friend ostream& operator<<(ostream& out, Student& stu) { out << stu.name << "\t" << stu.stuNum << " \t" << stu.score << endl; return out; } bool operator>(const Student& stu)const { return this->stuNum > stu.stuNum; } int getStuNum() const{ return stuNum; } int getScore()const { return score; } protected: string name; int stuNum; int score; private: }; bool CompareScore(const Student& one, const Student& two) { return one.getScore() > two.getScore(); } void testDiy() { list<Student>stuList; string name; int stuNum; int score; while (1) { cout << "请输入学生信息:" << endl; cin >> name >> stuNum >> score; stuList.push_back(Student(name, stuNum, score)); cout << "信息录入成功,是否继续录入?" << endl; while (cin.get() != '\n'); if (cin.get() == 'n')break; } cout << "姓名\t学号\t成绩" << endl; for (auto v:stuList) { //v.print(); cout << v; } //排序 stuList.sort(greater<Student>()); cout << "姓名\t学号\t成绩" << endl; for (auto v : stuList) { //v.print(); cout << v; } stuList.sort(CompareScore); cout << "姓名\t学号\t成绩" << endl; for (auto v : stuList) { //v.print(); cout << v; } } int main() { //testBase(); testDiy(); return 0; }
-
栈
#include <iostream> #include <string> #include <stack> using namespace std; void binaryTransfer(int num) { stack<int> binaryStack; while (num) { binaryStack.push(11 % 2); num = num / 2; } if (binaryStack.size() < 8) { for (int i = binaryStack.size(); i < 8; i++) { binaryStack.push(0); } } while (!binaryStack.empty()) { cout << binaryStack.top(); binaryStack.pop(); } } int main() { //1.栈的基本应用 //穿脱原则 先进后出 //push(data)进栈 //pop() 删除 //top() 获取栈顶元素 //size() empty(); stack<int> intStack; for (int i=0;i<5;i++) { intStack.push(i); } while (!intStack.empty()) { cout << intStack.top()<<" "; intStack.pop(); } cout << endl; //2.二进制转换 binaryTransfer(11); return 0; }
-
队列
- queue
#include <iostream> #include <string> #include <queue> using namespace std; void travelQueue(queue<int> object) { while (!object.empty()) { cout << object.front() << " "; object.pop(); } cout << endl; } int main() { queue<int> intQueue; for (int i=0;i<5;i++) { intQueue.push(i);//入队 } //非删除遍历 travelQueue(intQueue); //删除遍历 while (!intQueue.empty()) { //先进先出 cout << intQueue.front() << " "; intQueue.pop(); } cout << endl; return 0; }
- deque
#include <iostream> #include <deque> using namespace std; //从头出来 void pop_front_deque(deque<int> dData) { while (!dData.empty()) { cout << dData.front() << " "; dData.pop_front(); } cout << endl; } //从尾出来 void pop_back_deque(deque<int> dData) { while (!dData.empty()) { cout << dData.back() << " "; dData.pop_back(); } cout << endl; } int main() { deque<int> intDeque; for (int i=0;i<3;i++) { intDeque.push_front(i);//从头进队 intDeque.push_back(i);//从尾进队 } intDeque.push_front(10); pop_front_deque(intDeque); pop_back_deque(intDeque); return 0; }
- priority_queue
#include <iostream> #include <queue> #include <vector> using namespace std; int main() { //priority_queue<int> intQueue;//默认从大到小 //priority_queue<int, vector<int>, greater<int>> intQueue;//升序队列 priority_queue<int, vector<int>, less<int>> intQueue;//降序队列 intQueue.push(10); intQueue.push(2); intQueue.push(5); intQueue.push(16); intQueue.push(1); while (!intQueue.empty()) { cout << intQueue.top() << " "; intQueue.pop(); } cout << endl; return 0; }
- queue
14.C++STL容器(二)
最新推荐文章于 2024-05-28 21:13:10 发布