C++ STL中常见容器的时间复杂度和pair以及map基本函数的总结

本文详细介绍了STL中的四种容器:map、set、multimap、multiset以及hash_map、hash_set、hash_multimap、hash_multiset的实现原理与操作时间复杂度,并对比了红黑树与哈希表的不同。同时,深入解析了Pair类型,包括其定义、初始化及常用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

map, set, multimap, and multiset
上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种。不同操作的时间复杂度近似为:

插入: O(logN)
查看:O(logN)
删除:O(logN)

hash_map, hash_set, hash_multimap, and hash_multiset
上述四种容器采用哈希表实现,不同操作的时间复杂度为:

插入:O(1),最坏情况O(N)。


查看:O(1),最坏情况O(N)。


删除:O(1),最坏情况O(N)。

Pair类型概述
pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下:
 
pair<int, string> a;
表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。
 
pair<string, string> a("James", "Joy");
也可以像上面一样在定义的时候直接对其初始化。
 
由于pair类型的使用比较繁琐,因为如果要定义多个形同的pair类型的时候,可以时候typedef简化声明:
typedef pair<string, string> author;
author pro("May", "Lily");
author joye("James", "Joyce");
 

 

 

 

//对于pair对象的基本操作 
Pair对象的操作
 

对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员

pair<string, string> a("Lily", "Poly");  
string name;
name = pair.second;

生成新的pair对象

可以使用make_pair对已存在的两个数据构造一个新的pair类型:
int a = 8;
string m = "James";
pair<int, string> newone;
newone = make_pair(a, m);
 

 

//对于map的许多函数的使用

erase() 删除一个元素
    find()  查找一个元素
    insert()插入元素

  begin() 返回指向map头部的迭代器
    clear() 删除所有元素
    count() 返回指定元素出现的次数
    empty() 如果map为空则返回true
    end()   返回指向map末尾的迭代器

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值