当前位置: 首页 > backend >正文

第十五章 STL(stack、queue、list、set、map容器使用)

栈stack

使用:

队列queue

双向循环链表list

list构造函数

list 赋值和交换

list 大小操作

list 插入和删除

list 数据存取

list 反转和排序

排序算法sort降序操作

排序案例

#include<iostream>
using namespace std;
#include<list>class Person {
private:string name;int age;int hight;public:Person(string n, int a, int h) {this->name = n;this->age = a;this->hight = h;}void show() const{cout << "姓名:" << this->name << " " << "年龄:" << this->age << " " << "身高:" << this->hight << endl;}string getName() const {return name;}int getAge() const {return age;}int getHight() const {return hight;}};bool comparePerson(const Person& p1, const Person& p2) {if (p1.getAge() < p2.getAge())				//年龄升序return true;else if (p1.getAge() == p2.getAge()) {	if (p1.getHight() > p2.getHight())		//身高降序return true;}return false;
}void printPerson(const list<Person> &L) {for (list<Person>::const_iterator it = L.begin(); it != L.end(); it++) {it->show();}
}int main() {list<Person> persons;Person p1("张三", 20, 160);Person p2("李四", 18, 180);Person p3("王五", 8, 180);Person p4("赵六", 18, 150);//插入数据persons.push_back(p1);persons.push_back(p2);persons.push_back(p3);persons.push_back(p4);cout << "排序前" << endl;printPerson(persons);persons.sort(comparePerson);cout << "排序后" << endl;printPerson(persons);}

集合set(排序树)

set构造和赋值

set大小和交换

set插入和删除

set查找和统计

set和multiset区别

pair对组

set容器排序

set存放内置数据类型

set存放自定义数据类型

字典map

map构造和赋值

map大小和交换

map插入和删除

set查找和统计

map和multimap区别

同set

map容器排序

练习

#include <iostream>
using namespace std;
#include<vector>
#include<map>class employee {
private:string name;int salary;public:employee(string name, int salary) {this->name = name;this->salary = salary;}string getName() {return name;}int getSalary() {return salary;}
};void createEmployee(vector<employee> &e) {string nameSeed = "ABCDEFGHIJ";string name;int salary = rand() % 10000 + 10000;for (int i = 0; i < 10; i++) {name = "员工";name += nameSeed[i];e.push_back(employee(name, salary));salary = rand() % 10000 + 10000;}}void setGroups(multimap<int, employee> &G,vector<employee> &E) {std::srand(std::time(0));int depId;for(vector<employee>::iterator it = E.begin(); it!= E.end(); it++) {depId = rand() % 3 + 1; // 随机分配部门ID 1-3G.insert(make_pair(depId, *it)); // 将员工分配到对应部门}}int main() {multimap<int, employee> groups;vector<employee> e;			//员工createEmployee(e);			//员工初始化setGroups(groups, e);multimap<int, employee>::iterator pos = groups.find(1);		//策划部门int count = groups.count(1);								//统计部门人数int index = 0;cout << "策划部门员工信息:" << endl;for (; pos != groups.end() && index < count; pos++,index++) {cout << "姓名:" << pos->second.getName() << " 工资:" << pos->second.getSalary() << endl;}cout << "----------------------------------------" << endl;pos = groups.find(2);		//美术部门count = groups.count(2);								//统计部门人数index = 0;cout << "美术部门员工信息:" << endl;for (; pos != groups.end() && index < count; pos++, index++) {cout << "姓名:" << pos->second.getName() << " 工资:" << pos->second.getSalary() << endl;}cout << "----------------------------------------" << endl;pos = groups.find(3);		//研发部门count = groups.count(3);								//统计部门人数index = 0;cout << "研发部门员工信息:" << endl;for (; pos != groups.end() && index < count; pos++, index++) {cout << "姓名:" << pos->second.getName() << " 工资:" << pos->second.getSalary() << endl;}system("pause");return 0;
}

http://www.xdnf.cn/news/15143.html

相关文章:

  • 基于Selenium和FFmpeg的全平台短视频自动化发布系统
  • Linux小白学习基础内容
  • 反向传播notes
  • 重新配置电脑中的环境变量
  • NFS文件存储及部署论坛(小白的“升级打怪”成长之路)
  • GO启动一个视频下载接口 前端可以边下边放
  • 计算机网络实验——以太网安全实验
  • 图解LeetCode:79递归实现单词搜索
  • 【个人笔记】负载均衡
  • 04-ES6
  • 自动驾驶数据集综述:统计特征、标注质量与未来展望
  • AI+低代码双引擎驱动:重构智能业务系统的产品逻辑
  • 《PyQt6-3D应用开发技术文档》
  • MySQL常用命令
  • STM32F103C8T6驱动无源蜂鸣器详解:从硬件设计到音乐播放
  • hive小文件问题
  • requestIdleCallback:解锁浏览器空闲时段的性能优化艺术
  • MatrixOne Intelligence v3.3 正式发布:结构化、自动化、可视化三重进化
  • 二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
  • Spring Boot项目中大文件上传的优化策略与实践
  • C++的类中的虚拟继承【底层剖析(配图解)】
  • Android 13----在framworks层映射一个物理按键
  • SQL的初步学习(一)(以MySQL为例)
  • wpf使用webview2显示网页内容(最低兼容.net framework4.5.2)
  • 相机:以鼠标点为中心缩放(使用OpenGL+QT开发三维CAD)
  • 关于在html页面利用js操作liMarquee以及解决使用过程中出现的问题,附全屏切换相关代码
  • LINUX710 MYSQL
  • Oracle大表数据清理优化与注意事项详解
  • 深入理解机器学习
  • 无人机识别比赛记录与分析