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

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

pair

  • 想下,程序是什么样的.
    我是我们要带着自己的思考去学习DevangLic..
c 复制代码
#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 , 我们要带着自己的思考去学习..
c 复制代码
#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

  • 想下,程序是什么样的
c 复制代码
#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;
}

再增加一点点

c 复制代码
#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

  • 想下,程序是什么样的
c 复制代码
#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..
c 复制代码
#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

相关推荐
末央&10 分钟前
【C++】vector的底层封装和实现
android·c++
码界筑梦坊18 分钟前
基于Python的招聘推荐数据可视化分析系统
开发语言·爬虫·python·信息可视化·数据分析
CptainLee21 分钟前
python小整数池和字符串贮存
java·开发语言·python
nlog3n36 分钟前
Java访问者模式详解
java·开发语言·访问者模式
牛马大师兄41 分钟前
Shell脚本编程之正则表达式
linux·运维·服务器·开发语言·ssh·bash·shell
froginwe1142 分钟前
正则表达式 - 简介
开发语言
似水এ᭄往昔1 小时前
【C语言】编译和链接
c语言·开发语言
慕芊妤1 小时前
Logo语言的数据可视化
开发语言·后端·golang
十七算法实验室1 小时前
Matlab实现鼠群优化算法优化随机森林算法模型 (ROS-RF)(附源码)
开发语言·算法·决策树·随机森林·机器学习·支持向量机·matlab
烁3471 小时前
每日一题(小白)字符串娱乐篇16
java·开发语言·算法·娱乐·暴力