栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

c++ primer/第十一章 关联式容器

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

c++ primer/第十一章 关联式容器

目录

1.容器类型2.构造3.谓词4.类型别名5.插入返回值6.删除7.查找元素8. 查找算法9.无序容器

1.容器类型
//全部均为set,map
// 想要重复元素就在前面加 			multi
// 想要哈希表模式的就在前面加	   unordered_

组合一共8中类型
2.构造
//1.map可以直接用花括号指定元素
map authors = {
    {" ",""};
    {" ",""};
    ...
}

//2.set可以用顺序容器来初始化,如vector
vector vct{...};
set(vct.begin(),vct.end());
3.谓词
//谓词函数
bool mycompare(const  a, const b)
{
    return a.__ < b.__;
}

//实例对象
struct MyCompare1
{
	bool operator()(int val, int val1)
	{
		return val > val1;
	}
};

set ...;
set ...;
std::stable_sort(sv.begin(), sv.end(), mycompare);
std::stable_sort(sv.begin(), sv.end(), MyCompare1());
4.类型别名
::key_type				//关键字类型
::mapped_type			//值类型,只适用与map
::value_type			//对于set,与key_type是一样的
    					//对于map,返回的是 pair
//!!解引用时就会得到一个value_type类型的值!!
5.插入返回值

对于不包含重复关键字的容器,添加单一元素的insert和 emplace 版本返回一个pair,告诉我们插入操作是否成功

返回值: pair<迭代器,bool>;

迭代器指向具有给定关键字的元素’bool说明插入是否成功; true表示成功

6.删除
earse(key_value);	//根据值删除,会删除全部与它相同的值,返回一个size_type值,指出删除的数量
earse(b,e);		//删除两个迭代器之间的元素;
7.查找元素
//对于set.如果只是想判断元素是否存在,那么find 和 count 都一样
set isst = {...};
isst.find(x);
isst.count(x); 	//0和1
//对于map就不同,find 返回的是 一个迭代器,解引用是value_type.count返回数量
//find找不到均返回 .end()
map hash = {{},{}};
hash.find(key_value);

//map中 find 和 []/at 区别
- 如果用[]/at查找元素. 找不到会将该元素插入map中!
8. 查找算法
lower_bound(b,e,key_value);		//查找第一个大于等于value的数!
upper_bound(b,e,key_value);		//查找第一个大于value的数!
9.无序容器
//构造可以直接用有序容器
map hash;
unordered_map hash2(hash.begin(), hash.end());


//无序容器管理操作
//桶接口
• c.bucket_count()				//桶数目
• c.max_bucket_count()			//容器能容纳最大桶数目
• c.bucket_size(n)				//第n个同有多少个元素
• c.bucket(k)
//桶迭代
• local_iterator				//可以用来访问桶元素的迭代器
• const_local_iterator			//桶元素迭代器的const类型
• c.begin(n), c.end(n)			//桶n的开始,结尾迭代器
• c.cbegin(n), c.cend(n)		//桶n的开始,结尾常量迭代器
//哈希策略
• c.load_factor()				//每个桶的平均元素,类型float
• c.max_load_factor()			// c试图维护的平均桶大小,返回float值,c会在需要时添加新的桶,以使得load_factor<=max_load_factor
• c.rehash(n)					//重组存储,使得bucket_count >= n,且bucket_count>size/max_load_factor
• c.reserve(n)					//重组存储,使得c可以保存n个元素且不必rehash
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/751549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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