STL六大组件

简介: 一. STL六大组件介绍1. 容器STL容器包含两种:序列式容器主要有vector、list、deque,以及关联式容器主要有set、map、multiset、multimap。


一. STL六大组件介绍

1. 容器

STL容器包含两种:序列式容器主要有vector、list、deque,以及关联式容器主要有set、map、multiset、multimap。

容器主要是用来存放数据的,从实现的角度来看容器是一种class template(类模板)。


2. 算法

STL包含算法达上百种,主要有sort、search、copy、erase、find等,从实现的角度来说算法是一种function template(函数模板)

注意一个问题:任何的一个STL算法,都需要获得由一对迭代器所标示的区间,用来表示操作范围。这一对迭代器所标示的区间都是前闭后开区间,例如[first, last)。也就是说实际上,整个区间是从first开始到last-1,迭代器last指的是最后一个元素的下一个位置。在STL中所有区间都是采用前闭后开,这样可以带来很多方便。


3. 迭代器

STL中迭代器主要用来把容器和算法结合起来,扮演容器与算法之间的胶合剂,是所谓的“泛型指针”。从实现的角度看迭代器是一种将operator*、operator->、operator++、operator--等指针操作重载的class template(类模板)。所有的STL容器都有自己的迭代器,只有容器本身才知道如何遍历自身的元素。


4. 仿函数

仿函数是一种行为类似函数,但是实际是重载了operator()的class或class template(类模板),一般函数指针可视为狭义的仿函数。

#include<iostream>
#include<algorithm>
using namespace std;

class A{
public:
      int operator()(int x, int y){
          return x+y;
	  }
};
 
int main(){ 
	A *a = new A();
	cout<<(*a)(3,4)<<endl;
	
    getchar();
    return 0;
}
/*
输出
7 
*/

5. 适配器

适配器主要用来修饰容器接口、迭代器接口或仿函数接口的东西;STL提供了stack、queue两种容器适配器,stack和queue的底层完全是由deque来实现的。

改变容器接口的称为容器适配器、改变迭代器接口的称为迭代器适配器、改变仿函数接口的称为仿函数适配器


6. 空间配置器

STL的空间配置器主要用来给容器进行空间的配置与管理,从实现的角度来说空间配置器是实现了一个动态分配空间、空间管理、空间释放的class template(类模板)。


二. STL六大组件的交互关系



 容器通过空间配置器取得数据存储空间;算法利用迭代器向容器存取数据;仿函数协助算法完成不同的策略;适配器可以用来修改容器、迭代器或仿函数的接口;



目录
相关文章
|
6天前
|
存储 C++ 容器
C++STL(标准模板库)处理学习应用案例
【4月更文挑战第8天】使用C++ STL,通过`std:vector`存储整数数组 `{5, 3, 1, 4, 2}`,然后利用`std::sort`进行排序,输出排序后序列:`std:vector<int> numbers; numbers = {5, 3, 1, 4, 2}; std:sort(numbers.begin(), numbers.end()); for (int number : numbers) { std::cout << number << " "; }`
22 2
|
6天前
|
C++ 容器
基于STL的演讲比赛流程管理系统
基于STL的演讲比赛流程管理系统
|
6天前
|
存储 算法 编译器
C++的模板与泛型编程探秘
C++的模板与泛型编程探秘
11 0
|
6天前
|
安全 算法 编译器
【C++ 泛型编程 进阶篇】深入探索 C++ STL 容器的嵌套类型:识别、运用与最佳实践
【C++ 泛型编程 进阶篇】深入探索 C++ STL 容器的嵌套类型:识别、运用与最佳实践
98 7
|
9月前
|
算法 测试技术 C++
10.1 C++ STL 模板适配与迭代器
STL(Standard Template Library)标准模板库提供了模板适配器和迭代器等重要概念,为开发者提供了高效、灵活和方便的编程工具。模板适配器是指一组模板类或函数,它们提供一种适配机制,使得现有的模板能够适应新的需求。而迭代器则是STL中的令一种重要的概念,它是一个抽象化的数据访问机制,通过迭代器可以遍历STL容器中的元素。适配器与迭代器两者的紧密配合,使得开发者能够高效地处理容器中的元素,提高了代码的复用性和可维护性。
36 0
|
10月前
|
C++ 容器
STL模板库之迭代器失效问题及解决方案
STL模板库作为C++语言里一个重要的板块,在实际的开发中能极大的提高我们的开发效率,其中有一个问题另很多初学的同学感到头疼,那便是迭代器失效问题,本文将从校招的角度去讲解STL模板库之迭代器失效问题及解决方案。
|
6月前
|
设计模式 算法 C++
72 C++ - STL三大组件
72 C++ - STL三大组件
28 0
|
6月前
|
C++ 容器
93 C++ - STL综合案例
93 C++ - STL综合案例
33 0
|
7月前
|
存储 算法 编译器
C++ 泛型编程与STL技术
模板的概念 模板就是建立通用的模具,大大提高复用性 例如生活中的模板 一寸照片模板: PPT模板: 模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 函数模板 C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板 函数模板语法 函数模板作用: 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。 语法: template<typename T> 函数声明或定义 1 2 解释: template — 声明创建模板 typename — 表面其后面的符号是一
32 0
|
10月前
|
存储 C++ 容器
STL空间配置器框架分析
STL空间配置器框架分析
63 0