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

【STL 之速通pair vector list stack queue set map 】

  • 考list 的比较少 --双端的啦

pair

在这里插入图片描述

  • 想下,程序是什么样的.
    我是我们要带着自己的思考去学习DevangLic..
#include <iostream>
#include <utility>
#include <string>

using namespace std;

int main() {
	// 第一部分:创建并输出两个 pair 对象
	pair<int, double> p1(1, 3.14);
	pair<char, string> p2('a', "hello");
	
	cout << "第一部分输出:" << endl;
	cout << "p1.first: " << p1.first << ", p1.second: " << p1.second << endl;
	cout << "p2.first: " << p2.first << ", p2.second: " << p2.second << endl;
	
	// 第二部分:创建并输出三个嵌套的 pair 对象
	pair<int, int> p3(1, 2);
	pair<int, pair<int, int>> p4(3, make_pair(4, 5));
	// 修正 p5 的定义,确保类型正确
	pair<pair<int, int>, pair<int, string>> p5(make_pair(6, 7), make_pair(8, "world"));
	
	cout << "\n第二部分输出:" << endl;
	cout << "p3.first: " << p3.first << ", p3.second: " << p3.second << endl;
	cout << "p4.first: " << p4.first << ", p4.second.first: " << p4.second.first 
	<< ", p4.second.second: " << p4.second.second << endl;
	cout << "p5.first.first: " << p5.first.first << ", p5.first.second: " << p5.first.second 
	<< ", p5.second.first: " << p5.second.first << ", p5.second.second: " << p5.second.second << endl;
	
	// 修正返回语句
	return 0;
}


再来一点

在这里插入图片描述

  • 想下,程序是什么样的.
    我是DevangLic , 我们要带着自己的思考去学习..
#include <iostream>
#include <utility>
#include <vector>

using namespace std;

// 定义一个结构体,表示一个人的信息
struct Person {
	string name;
	int age;
};

int main() {
	// 创建一个存储Person对象的向量
	vector<Person> people;
	people.push_back({"Alice", 25});
	people.push_back({"Bob", 30});
	people.push_back({"Charlie", 20});
	
	// 创建一个存储pair的向量,每个pair包含一个Person对象和一个评分
	vector<pair<Person, int>> scores;
	scores.push_back({people[0], 90});
	scores.push_back({people[1], 85});
	scores.push_back({people[2], 95});
	
	// 遍历pair向量,并输出每个人的姓名、年龄和评分
	for (const auto& pair : scores) {
		cout << "Name: " << pair.first.name << "\t";
		cout << "Age: " << pair.first.age << "\t";
		cout << "Score: " << pair.second << endl;
	}
	
	return 0;
}

vector

在这里插入图片描述

  • 想下,程序是什么样的
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	// 创建一个空的vector对象
	vector<int> numbers;
	
	// 向向量中添加元素
	numbers.push_back(5);
	numbers.push_back(2);
	numbers.push_back(8);
	numbers.push_back(5);
	numbers.push_back(1);
	numbers.push_back(2);
	numbers.push_back(9);
	numbers.push_back(8);
	
	// 打印向量中的元素
	cout << "原始向量中的元素:";
	for (const auto& number : numbers) {
		cout << number << " ";
	}
	
	cout << endl;
	// 对向量进行排序
	sort(numbers.begin(), numbers.end());
	
	// 打印排序后的向量
	cout << "排序后的向量:";
	for (const auto& number : numbers) {
		cout << number << " ";
	}
	cout << endl;
	
	// 去除重复元素
	numbers.erase(unique(numbers.begin(), numbers.end()), numbers.end());
	
	// 打印去重后的向量
	cout << "去重后的向量:";
	for (const auto& number : numbers) {
		cout << number << " ";
	}
	cout << endl;
	
	// 向向量中插入元素
	numbers.insert(numbers.begin() + 2, 3);
	
	// 打印插入元素后的向量
	cout << "插入元素后的向量:";
	for (const auto& number : numbers) {
		cout << number << " ";
	}
	cout << endl;
	
	return 0;
}

再增加一点点

在这里插入图片描述

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
	// 初始化向量
	vector<int> numbers = {1, 2, 3, 4, 5};
	
	// 打印插入元素后的向量
	// 假设插入元素后的向量为 {1, 2, 3}
	numbers = {1, 2, 3}; // 为了演示,重新初始化向量
	cout << "插入元素后的向量: ";
	for (const auto& number : numbers) {
		cout << number << " ";
	}
	cout << endl;
	
	// 删除向量中的某个元素(例如第5个元素,索引为4)
	// 注意:当前向量大小为3,删除索引4会导致未定义行为
	// 这里假设向量有足够的元素
	if (numbers.size() > 4) {
		numbers.erase(numbers.begin() + 4);
	} else {
		cout << "没有第5个元素可以删除。" << endl;
	}
	
	// 打印删除元素后的向量
	cout << "删除元素后的向量: ";
	for (const auto &number : numbers) {
		cout << number << " ";
	}
	cout << endl;
	
	// 检查向量是否为空
	if (numbers.empty()) {
		cout << "向量为空" << endl;
	} else {
		cout << "向量不为空" << endl;
	}
	
	// 获取向量的大小
	cout << "向量的大小: " << numbers.size() << endl;
	
	// 清空向量
	numbers.clear();
	
	// 检查向量是否为空
	if (numbers.empty()) {
		cout << "向量为空" << endl;
	} else {
		cout << "向量不为空" << endl;
	}
	
	return 0;
}

list

在这里插入图片描述

  • 想下,程序是什么样的

#include <iostream>
#include <list>
#include <algorithm>

using namespace std;

int main() {
	// 创建一个list<int>对象myList
	list<int> myList;
	
	// 向myList尾部添加元素
	for (int i = 1; i <= 5; ++i) {
		myList.push_back(i);
	}
	
	// 输出myList的大小
	cout << "链表大小为: " << myList.size() << '\n';
	
	// 从头到尾输出myList中的元素
	for (const auto &i : myList) {
		cout<< i << ' ';
	}
	cout << '\n';
	
	// 将myList中的元素反转
	reverse(myList.begin(), myList.end());
	
	// 从头到尾输出myList中的元素
	for (const auto &i : myList) {
		cout<< i << ' ';
	}
	cout << '\n';
	
	// 在第一个元素的后一个位置加上元素0
	myList.insert(++myList.begin(), 0);
	cout<<" after add ----\n";
	for (const auto &i : myList) {
		cout<< i << ' ';
	}
	cout << '\n';
	
	return 0;
}

stack

在这里插入图片描述

  • 想下,程序是什么样的.
    我是, 我们要带着自己的思考去学习 DevangLic..
#include <iostream>
#include <stack>

using namespace std;

int main() {
	// 声明一个 stack<int> 类型的变量 mystack
	stack<int> mystack;
	
	// 向栈中插入元素
	mystack.push(10);
	mystack.push(20);
	mystack.push(30);
	mystack.push(40); //
	
	// 获取栈顶元素
	cout << "栈顶元素:" << mystack.top() << endl;
	
	// 弹出栈顶元素
	mystack.pop();
	
	// 再次获取栈顶元素
	cout << "弹出一个元素后的栈顶元素:" << mystack.top() << endl;
	
	// 检查栈是否为空
	if (mystack.empty()) { // 
		cout << "栈为空" << endl;
	} else {
		cout << "栈不为空" << endl;
	}
	
	// 获取栈的大小
	cout << "栈的大小:" << mystack.size() << endl; // 
	
	return 0; // 
}


未完待续

queue set map

相关文章:

  • Linux系统学习Day04 阻塞特性,文件状态及文件夹查询
  • LeetCode 416、606题解(中等dp、回溯)
  • FPGA_DDR(一) 仿真
  • continew-admin的报错问题
  • HTTPS在信息传输时使用的混合加密机制,以及共享、公开密钥加密的介绍。
  • Java Flow 编程:异步数据流介绍
  • 学习日记-0407(Inductive Matrix Completion Using Graph Autoencoder)
  • C盘清理——快速处理
  • SOLIDWORKS 2025教育版有效的数据管理与团队协作
  • Android studio学习之路(六)--真机的调试以及多媒体照相的使用
  • NXP i.MX 平台下双平台设备驱动解析:`imx-lcdifv3` 与 `imx-drm` 的实战解剖
  • Android 学习之 Navigation导航
  • 实时图表工具GLG Toolkit 在 Web HMI/SCADA 领域的卓越实践
  • ubuntu wifi配置(命令行版本)
  • 设计模式之解释器模式:原理、实现与应用
  • 大数据(5)Spark部署核弹级避坑指南:从高并发集群调优到源码级安全加固(附万亿级日志分析实战+智能运维巡检系统)
  • 【项目管理】第4章 信息系统管理 --知识点整理
  • Perl语言的WebAssembly
  • idea 打不开terminal
  • 工业4.0时代:RK3588边缘工业计算机助力AGV导航升级
  • Ext做网站/深圳短视频推广
  • 网络公司网站模版/优化大师电脑版下载
  • 空间做网站/驻马店网站seo
  • 广州最新疫情公布/搜索引擎优化英文简称为
  • 网站公司怎么做运营/网络营销步骤
  • 广东品牌网站建设多少钱/图片扫一扫在线识别照片