栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】STL各种数据结构的应用场景

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】STL各种数据结构的应用场景

向量 (vector)

通过索引 O(1) 时间复杂度获取索引值。

链表 (list)

O(1) 时间复杂度增、删、改节点、交换任意两个节点,但不支持快速索引。

堆 (priority_queue)

O(1) 时间复杂度获取最大值或最小值,但只支持插入新值,删除最大/最小值,不支持快速查找删除某一特定值

哈希表 (unordered_map, unordered_set)

unordered_set: O(1) 时间复杂度判断某一关键字是否存在,也可用于去重;
unordered_map: O(1) 时间复杂度判断某一关键字是否存在,同时获取其对应的值。

注:只有哈希函数太差或者发生哈希重建才会退化为O(N)。

红黑树 (map, set)

用于 O ( log ⁡ n ) O(log n) O(logn) 实现增、删、查、改,同时可通过迭代器 O(1) 时间复杂度获取最大最小值。举例:

#include 
#include 
#include 

using namespace std;

int main() {
	set> s;
	s.insert(make_pair(1, 2));
	s.insert(make_pair(3, 4));
	s.insert(make_pair(1, 1));
	cout << s.begin()->first << ' ' << s.begin()->second << endl;
}

set 和 map 默认升序排列,当然也可以自定义排序方式。
pair 默认先比较第一个,第一个相同再比较第二个。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1037325.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号