C++ STL 是什么

r囧r小猫 2022-09-08 03:59 229阅读 0赞

什么是STL?

1) STL(Standard Template Library),即标准模板库,是一个高效的C++程序库,包含了诸多常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。

2) 从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic programming)。在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。

3) 从实现层次看,整个STL是以一种类型参数化(type parameterized)的方式实现的,基于模板(template)。

STL有六大组件,但主要包含容器、算法和迭代器三个部分。

  • 容器(Containers):用来管理某类对象的集合。各种数据结构,如vector、list、deque、set、map等,用来存放数据,从实现角度来看,STL容器是一种class template。
  • 算法(Algorithms):用来处理对象集合中的元素,各种常用的算法,如sort、find、copy、for_each。从实现的角度来看,STL算法是一种function template。
  • 迭代器(Iterators):用来在一个对象集合的元素上进行遍历动作。扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator* , operator-> , operator++, operator–等指针相关操作予以重载的class template。所有STL容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。原生指针(native pointer)也是一种迭代器。
  • 仿函数:行为类似函数,可作为算法的某种策略。从实现角度来看,仿函数是一种重载了operator()的class 或者class template。
  • 适配器:一种用来修饰容器或者仿函数或迭代器接口的东西。
  • 空间配置器:负责空间的配置与管理。从实现角度看,配置器是一个实现了动态空间配置、空间管理、空间释放的class tempalte。

STL 的基本观念就是将数据和操作分离。数据由容器进行管理,操作则由算法进行,而迭代器在两者之间充当粘合剂,使任何算法都可以和任何容器交互运作。通过迭代器的协助,我们只需撰写一次算法,就可以将它应用于任意容器之上,这是因为所有容器的迭代器都提供一致的接口。

https://zhuanlan.zhihu.com/p/158647883

发表评论

表情:
评论列表 (有 0 条评论,229人围观)

还没有评论,来说两句吧...

相关阅读

    相关 什么Visual C

    Visual c++是一个功能强大的可视化软件开发工具。 自1993年microsoft公司推出Visual c++1.0后,随着其新版本的不断问世,Visual c++已成

    相关 C语言什么

    C语言是一种通用的、面向过程的计算机编程语言。它是一种高级语言,旨在提供比较方便的方式来编写计算机程序。C语言最初由丹尼斯·莫里森(Dennis Ritchie)在1970年代

    相关 C++ STL 什么

    什么是STL? 1) STL(Standard Template Library),即标准模板库,是一个高效的C++程序库,包含了诸多常用的基本数据结构和基本算法。为广大

    相关 C# @什么意思

    让转移字符”\\”保持原意,不要转义,如一个地址字符串 string path=”c:\\abc\\”; 默认的”\\”是作为转义来使用的,而不是一个真的斜杠字符串

    相关 c++ stl

    1.list assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 em

    相关 什么C++标准模板库(STL)的概念

    C++提供了多种代码重用机制,在前面介绍派生和继承时,派生类可以继承基类中的成员变量和成员函数。模板是另一种代码重用机制。 有时候在设计程序的时候会遇到这样一种情况:需要设计