stl常用容器说明

容器特点

  • vector :动态数组,内存连续,支持随机访问([]),尾部插入/删除 O(1),中间插入/删除 O(n)。
  • list:双向链表,内存不连续,不支持随机访问,任意位置插入/删除 O(1)。
  • set:有序集合,元素唯一且自动升序,基于红黑树,插入/查找/删除 O(log n)。
  • map :有序键值对,键唯一且自动按键升序,基于红黑树,[] 和插入/查找/删除 O(log n)。
  • unordered_map:无序键值对,键唯一,基于哈希表,平均插入/查找/删除 O(1),最坏 O(n)。

代码

cpp 复制代码
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<unordered_map>
#include<list>
using namespace std;
int main() {
	//vector:动态数组。 特点:内存连续,支持随机访问,尾部插入高效
	vector<int> vec= {1, 2, 3};
	vec.push_back(4); // 在数组末尾添加元素4,时间复杂度:O(1)

	// list:双向链表。特点:内存不连续,插入删除高效,不支持随机访问
	list<int> list = { 10,20,30 };
	list.push_front(5);// 在链表头部插入元素5

	set<int> s = { 5,2,3,3 };
	map<string, int> m = { {"Tom",11} ,{"jerry",22}};
	unordered_map<string, int> um;
	um["apple"] = 3;
	um["banana"] = 5;


	//====================输出=================================
	cout << "vec[3]:" << vec[3] << endl;
	cout << "list第一个元素:" << list.front() << endl;
	cout << "set全部元素:";
	for (int i : s) {
		//cout << s[i] << " ";//错误写法
		cout << i << " ";
	}
	cout << endl;

	cout << "map:";
	for (auto it = m.begin(); it != m.end(); it++) {
		cout << it->first << ":" << it->second << endl;
	}

	//pair.first → 键(key):这里是 string 姓名
	//pair.second → 值(value):这里是 int 年龄
	for (auto& pair : m) {
		cout << pair.first << ":" << pair.second << endl;
	}

	cout << "unordered_map:" << endl;
	for (auto& kv : um) {
		cout << kv.first << ":" << kv.second << endl;
	}
	//cout << "list[0]:" << list[0] << endl;
	// // list:双向链表,不支持[],必须用迭代器/front()
	return 0;
}

输出结果

相关推荐
ziguo112236 分钟前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
白色冰激凌1 小时前
[SECS/GEM研究] (三)SECS-I 串口上消息怎么分块和重传
c++·secs/gem
光头闪亮亮1 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go
光头闪亮亮1 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(下)
android·c++·go
吃好睡好便好2 小时前
MATLAB中图像的读取、写入和显示
开发语言·图像处理·学习·计算机视觉·matlab
yaoxin5211232 小时前
476. Java 反射 - 调用方法
java·开发语言
_wyt0012 小时前
洛谷 P7912 [CSP-J 2021] 小熊的果篮 题解
c++·队列
猫头虎2 小时前
什么是ZCode for GLM-5.2?
开发语言·人工智能·python·科技·算法·ai编程·ai写作
choumin3 小时前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式
bksczm3 小时前
Linux之日志和线程池、内存池
java·开发语言