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

输出结果

相关推荐
CRMEB系统商城2 分钟前
前后端技术栈全面换代!CRMEB 多商户(Java)v3.0更新预告
java·开发语言·小程序·php
2601_962885723 分钟前
如何用 Python 画 K 线图(蜡烛图)?(mplfinance + 均线 + 成交量)
开发语言·python
事圆则缓6 分钟前
Flutter 状态管理框架对比(三):Riverpod 如何连起购物车与异步价格
开发语言·javascript·flutter
蓝宝石的傻话8 分钟前
onvif-go(mickeyzzc/onvif-go v2)完整参考手册:从建工程到写出自己的 NVR 接入
开发语言·后端·golang
Elastic 中国社区官方博客17 分钟前
使用 Lucene 搜索你的 Bean —— Elasticsearch
大数据·开发语言·人工智能·elasticsearch·搜索引擎·全文检索·lucene
Sayai33 分钟前
Neo4j 内嵌模式(Embedded)实战:Java 嵌入式 vs 服务端部署的写入性能对比与 GC 调优
java·开发语言·性能优化·neo4j·图数据库
lengxuenong1 小时前
枚举例题分析
c++·算法·青少年编程
“AI国潮设计-小江”1 小时前
【SDXL实战】用AI生成“财神爷蛋糕×英歌舞人物”潮汕国潮甜品IP,附Prompt与批量生成思路
开发语言·人工智能·python·aigc
繁华的地方不一定留下你的脚印1 小时前
C++线程如何安全停止与唤醒:std::jthread、stop_token与condition_variable
开发语言·c++
caoerzhong1 小时前
跨境海外仓怎么管:JeeWMS 开源 Java 仓库管理系统打通头程、海外仓与尾程
java·开发语言·开源