首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++】STL 标准模板库 ③ ( STL 容器简介 | STL 容器区别 | STL 容器分类 | 常用的 STL 容器 )

一、STL 容器简介 1、STL 容器区别 STL 容器 用于管理 一组 数据元素 , 不同类型的 STL 容器 的区别 主要是 节点 节点之间的关系模型 不同 ; 容器的内存空间是否连续 : 向量...主要是 研究 节点 与 节点 之间关系的 ; 2、STL 容器分类 STL 容器 分为 2 大类 , 分别是 " 序列式容器 " " 关联式容器 " ; 序列式容器 : Sequence Containers..., 容器中每个元素的位置都是固定的 , 元素的位置取决于插入元素的 时间 位置 , 与元素值无关 ; 向量 Vector , 双端队列 Deque , 列表 List 是序列式容器 ; 如下图所示..., 多重集合 MultiSet , 映射 Map , 多重映射 MultiMap 是 关联式容器 ; 如下图所示 , 关联式容器的元素位置与特定规则有关 , 与插入时间位置无关 ; 3、常用的 STL...容器 常用的 STL 容器 : 向量 vector : 是连续存储的元素 , 其内存是连续的 ; 可以 访问修改任意元素 , 但在 序列尾部 进行 插入 删除时 , 具有常量时间复杂度 ; 需导入

68130
您找到你想要的搜索结果了吗?
是的
没有找到

STL之关联式容器(setmultiset)

set 容器内部元素的组织方式 map 相同,都是平衡二叉树 初始化 std::set numbers {8, 7, 6, 5, 4, 3, 2, 1}; 默认的比较函数是...less,因此容器中的元素会升序排列。...emplace() emplace_hint() 总是成功。它们都指向创建的新元素。 find() 会返回参数匹配的第一个元素的迭代器,如果都不匹配,则返回容器的结束迭代器。...lower_bound() 返回参数匹配的第一个元素的迭代器,如果没有匹配的元素,会返回容器的结束迭代器。返回的迭代器 range() 返回的 pair 的第一个成员相同。...upper_bound() 返回的迭代器 equal_range() 返回的 pair 的第二个成员相同。 count() 返回参数匹配的元素的个数。

42120

C++ STL容器算法:详解实例演示

C++ STL(标准模板库)提供了一组丰富的容器算法,使得开发者能够更加高效地编写程序。本文将介绍STL中的一些常用容器算法。...此外,map还提供了m.empty()m.size()分别判断容器是否为空获取容器大小。 算法 除了容器STL还提供了一些常用的算法,可以方便地操作容器中的元素。...除了find,STL还提供了很多其他的查找算法,比如find_if可以根据指定规则查找元素,binary_search可以判断容器中是否含有指定元素,lower_boundupper_bound可以查找元素的下界上界...结论 本文介绍了C++ STL中的一些常用容器算法,它们可以大大提高开发效率,开发者应该熟练掌握它们的使用。除了本文介绍的容器算法,STL还提供了很多其他的容器算法,可以根据具体的需求选择使用。...在使用STL时,要注意容器算法的复杂度,避免出现性能问题。

35000

STL之关联式容器(pair,tuplemultimap)

multimap 中会出现具有相同键的元素序列,它们会被添加到容器中。 3.1插入元素 multimap 容器的成员函数 insert() 可以插入一个或多个元素,而且插入总是成功。...如果使用 multimap 容器,几乎可以肯定它会包含键重复的元素;否则,就应该使用 map。 一般来说,我们想访问给定键对应的所有元素。 equal_range() 。...,或是不同类型的但可以键比较的对象。...如果键不存在,pair 的成员变量 first 就是容器的结束迭代器. lower_bound() 会返回一个迭代器,它指向键值参数相等或大于参数的第一个元素,或者指向结束迭代器。...所以,当存在一个或多个相等键时,这些函数会返回一个开始迭代器一个结束迭代器,它们指定了参数匹配的元素的范围,这 equal_range() 返回的迭代器是相同的。

50140

c++STL容器之vector容器

vector普通数组的区别:数组是静态空间,而vector可以动态扩展。 所谓动态扩展:并不是在原空间后接新空间,而是找到更大的内存空间,然后将原数据拷贝至,然后释放原空间。...end()); printVector(v3); vector v4; v4.assign(4, 3); printVector(v4); } 三、vector容器的容量大小...insert(pos,n,ele)//向指定的索引位置插入n个元素 erase(pos)//删除指定索引的元素 erase(start,end)//删除start到end之间的元素 clear()//清空容器...at(0) = 6; cout << v1.front() << endl;//第一个元素 cout << v1.back() << endl;//最后一个元素 } 六、vector互换容器...七、vector预留空间 减少vector在动态扩展容量时的扩展次数 函数原型:reverse(int len);//容器预留len个元素长度,预留位置不初始化,元素不可访问 #include<iostream

43320

STL里的容器区别

小结 我们常用到的STL容器有vector、list、deque、map、multimap、setmultiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我们了解清楚...map map类似于数据库中的1:1关系,它是一种关联容器,提供一对一(C++ primer中文版中将第一个译为键,每个键只能在map中出现一次,第二个被译为该键对应的值)的数据处理能力,这种特性了使得...multimap multimap类似于数据库中的1:N关系,它是一种关联容器,提供一对多的数据处理能力。...---- 小结 在实际使用过程中,到底选择这几种容器中的哪一个,应该根据遵循以下原则: 1、如果需要高效的随机存取,不在乎插入删除的效率,使用vector; 2、如果需要大量的插入删除元素...,不关心随机存取的效率,使用list; 3、如果需要随机存取,并且关心两端数据的插入删除效率,使用deque; 4、如果打算存储数据字典,并且要求方便地根据key找到value,一对一的情况使用

1K40

【C++】STL 容器 - STL 容器的值语意 ( 容器存储任意类型元素原理 | STL 容器元素可拷贝原理 | STL 容器元素类型需要满足的要求 | 自定义可存放入 STL 容器的元素类 )

一、STL 容器的 值 ( Value ) 语意 1、STL 容器存储任意类型元素原理 C++ 语言中的 STL 容器 , 可以存储任何类型的元素 , 是因为 STL 容器 使用了 C++ 模板技术进行实现...; 2、STL 容器元素可拷贝原理 STL 容器 定义时 , 所有的 STL 容器 的相关操作 , 如 插入 / 删除 / 排序 / 修改 , 都是 基于 值 Value 语意 的 , 不是 基于 引用...容器元素类型需要满足的要求 STL 容器元素类型需要满足的要求 : 提供 无参 / 有参 构造函数 : 保证可以创建元素对象 , 并存放到容器中 ; 提供 拷贝构造函数 : STL 容器的元素是可拷贝的..., 这是容器操作的基础 ; 提供 重载 = 操作符函数 : STL 容器的元素可以被赋值 ; 4、STL 容器迭代器遍历 除了 queue 队列容器 与 stack 堆栈容器 之外 , 每个 STL...char* 类型指针 int 类型成员 ; 其中 char* 类型指针涉及到 堆内存 的 申请 释放 ; 在 有参构造 函数中 , 主要作用是 创建新对象 , 这里 直接 申请内存 , 并使用参数中的值

11110
领券