C++进阶——STL

本文介绍了STL(标准模板库)的基础概念,包括其提升开发效率的容器、算法、迭代器,以及仿函数、适配器和空间配置器的作用。详细探讨了各种容器的特点和算法的应用,展示了如何使用迭代器操作容器元素。
摘要由CSDN通过智能技术生成

STL基本概念:

STL——Standard Template Library    (标准模板库)

提升开发效率并保证代码质量,通过泛型编程,使得这些数据结构和算法适用于多种数据类型

STL的六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器


容器:

这是用于存储数据的数据结构。

算法:

STL提供了一系列通用算法。

迭代器:

提供了访问容器中元素的方式,它是容器和算法之间的桥梁。

仿函数:

是一种重载了函数调用操作符operator()的类或对象,使得它们可以像函数一样被调用。

可以用来定制算法的行为,比如比较函数、平方函数等,是实现策略模式的一种方式。

适配器:

用于调整现有类接口以满足新需求,分为三类:

容器适配器,它们基于现有的容器提供特定接口。

迭代器适配器,改变迭代器的行为(如反向迭代器)。

函数适配器,调整或增强函数对象的行为。

空间配置器:

负责管理内存的分配与释放。

为容器提供了一种机制来获取和管理内存,使得STL能够独立于底层的内存管理机制,并允许用户自定义内存管理策略,以提高效率或满足特殊需求。


STL最核心的就是容器、算法、迭代器


容器:

常用的数据结构:数组、链表、树、栈、队列、集合、映射表等

这些容器分为序列式容器和关联式容器

​序列(顺序)式容器:

强调值的排序,序列式容器中的每个元素均有固定的位置

vector: 动态数组,可以在尾部高效地添加或删除元素,支持随机访问。

list: 双向链表,允许在列表的任何位置高效地插入和删除元素,但随机访问较慢。

deque: 双端队列,可以在两端高效地插入和删除,同样支持随机访问,但中间插入删除较慢。

array: 固定大小的数组,是C风格数组的类型安全版本,长度在编译时确定。

forward_list: 单向链表,只支持向前遍历,用于不需要反向遍历的场景,更节省空间。
 

​关联式容器:

二叉树结构体,各元素之间没有严格上的物理上的顺序关系

set: 无重复元素的集合,按照特定的排序规则自动排序元素。
multiset: 类似set,但允许有重复元素。
map: 键值对集合,键唯一,自动排序。
multimap: 类似map,但允许有重复的键。
unordered_set: 类似set,但使用哈希表实现,不保证顺序,查找速度快。
unordered_multiset, unordered_map, unordered_multimap: 分别对应于multiset、map、multimap的哈希版本。

算法:

迭代器:

定义迭代器变量

#include<iostream>
#include<vector>

int main()
{
	std::vector <int> v{ 1,2,2 };

	std::vector<int>::iterator it ;

	//auto it = v.begin();

	std::cout << *it << std::endl;

	return 0;
}

//输出结果是
1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值