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;
}

输出结果

相关推荐
WBluuue2 小时前
Codeforces 1088 Div1+2(ABC1C2DEF)
c++·算法
踏着七彩祥云的小丑2 小时前
Python——字符串常用操作
开发语言·python
成都易yisdong3 小时前
基于C#和WMM2025模型的地磁参数计算器实现
开发语言·c#
像素猎人3 小时前
map<数据类型,数据类型> mp和unordered_map<数据类型,数据类型> ump的讲解,蓝桥杯OJ4567最大数目
c++·算法·蓝桥杯·stl·map
Sss_Ass3 小时前
在Qt Creator创建并编写第一个程序
开发语言·qt
沐雪轻挽萤3 小时前
1. C++17新特性-序章
java·c++·算法
郝学胜-神的一滴3 小时前
从链表到二叉树:树形结构的入门与核心性质解析
数据结构·c++·python·算法·链表
预见AI3 小时前
C#索引器练习题
开发语言·计算机视觉·c#