C++进阶——STL

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. C++——STL

    2024-05-02 09:58:02       27 阅读
  2. C++编程 --- 2.初始STL

    2024-05-02 09:58:02       42 阅读
  3. SQL:视图

    2024-05-02 09:58:02       70 阅读
  4. C++:模板

    2024-05-02 09:58:02       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 09:58:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 09:58:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 09:58:02       82 阅读
  4. Python语言-面向对象

    2024-05-02 09:58:02       91 阅读

热门阅读

  1. OceanBase在实际应用中有哪些优势和不足?

    2024-05-02 09:58:02       88 阅读
  2. 社交到底是什么?

    2024-05-02 09:58:02       31 阅读
  3. redis sorted Set命令基本使用

    2024-05-02 09:58:02       29 阅读
  4. 11、Flink 的 Keyed State 详解

    2024-05-02 09:58:02       26 阅读
  5. Kubernetes学习笔记01

    2024-05-02 09:58:02       24 阅读
  6. 关于HTML

    2024-05-02 09:58:02       38 阅读
  7. netty的继续学习一(相关概念)

    2024-05-02 09:58:02       31 阅读
  8. c#工控行业的视觉技术栈

    2024-05-02 09:58:02       26 阅读
  9. 串行化执行代码实践

    2024-05-02 09:58:02       33 阅读