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

【C++】STL 标准模板库 ② ( STL 标准模板库组成 | STL 十三个头文件 | STL 六大组件 | STL 容器存放基础数据类型 | STL 容器存放类对象 | 容器存放对象指针 )

一、STL 标准模板库组成 1、STL 十三个头文件 STL 标准模板库 Standard Template Library 主要包括 容器 / 迭代器 / 算法 三大类内容 , 其中 容器 和 算法...是通过 迭代器 进行关联的 ; 所有的 C++ 程序都会使用到 STL 标准模板库 , 使用 STL 提供的容器更加快速地开发程序代码 ; STL 标准模板库 的 头文件 中 内置了 各种常用的 存储数据的模板类...及 相应的操作函数 , 是一个基础模板集合 ; STL 标准模板库 头文件有 十三 个 : : STL 容器的一系列算法 , 如 排序算法 , 查找算法 等 ; ...; : 内存管理 模块 , 提供 动态内存分配 和 释放 等功能 ; : 数学运算函数 , 如 : 求和 , 乘积 等运算 ; : 实用函数和模板类...三、代码示例 - STL 容器存放自定义类对象 代码示例 : #include "iostream" using namespace std; // 使用 STL 容器中的 vector 向量容器需要导入的头文件

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

    《C++11》右值引用深度解析:性能优化的秘密武器

    完美转发是C++11的另一个重要特性,它允许函数模板将其参数“完美地”转发到其他函数。这是通过使用右值引用和模板类型推导实现的。...template void wrapper(T&& arg) { foo(std::forward(arg));}在这个例子中,wrapper函数可以将其参数arg完美地转发到...,我们使用std::move函数将ptr1转换为右值,然后将其赋值给ptr2。...在移动操作后,源对象将处于有效但未定义的状态。因此,除非你确定不再需要源对象,否则不应该使用移动语义。其次,不是所有的类都支持移动语义。只有定义了移动构造函数或移动赋值操作符的类才支持移动语义。...对于不支持移动语义的类,使用std::move将导致复制操作。最后,右值引用不能绑定到左值上。如果你试图将左值绑定到右值引用上,编译器将报错。

    12000

    C++:模版初阶 | STL简介

    原因:该语句不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型通过实参a1将T推演为int,通过实参d1将T推演为double类型,但模板参数列表中只有一个T,编译器无法确定此处到底该将...int转double还好点,double转int会造成精度丢失 2、显示实例化:你不是不敢强转吗,那我就命令你必须强转成某个类型去计算,如果可以转化,那么编译器就会尝试去转化,如果转化不成功,编译器就会报错...模板函数不允许自动类型转换,但普通函数可以进行自动类型转换 也就是说如果找不到匹配的函数,那么优先会去找普通函数,因为普通函数支持强转。...3.2 类模版的实例化 类模板实例化与函数模板实例化不同(无法像函数那样根据参数类型去推导,必须用户显式实例化),类模板实例化需要在类模板名字后跟,然后将实例化的类型放在中即可,类模板名字不是真正的类...,而实例化的结果才是真正的类 Vector s1; Vector s2;  注意:Vector类名,Vector才是类型 四、STL简介 4.1 什么是STL STL

    14810

    【C++】STL 算法概念和分类 ( STL 算法头文件 | STL 算法思想 - 数据与算法分离 | STL 算法 迭代器 | STL 算法 操作对象 | STL 算法分类 )

    算法头文件 标准模板库 STL 算法 都定义在 , 和 三个头文件中 ; 使用 STL 标准模板库 算法时 , 导入上述 3 个头文件..., 如 : 在 序列 上 执行 加减乘除 操作 ; 头文件 中 只 定义了一些模板类 , 这些模板类的作用是 声明函数对象 ; STL 标准模板库 提供了 实现算法 的 模板函数..., 借助这些 模板函数 , 只需要几行代码 , 即可实现相应算法的复杂功能 , 极大地提升了开发效率 和 程序的可维护性 ; 2、STL 算法思想 - 数据与算法分离 STL 算法 的 核心思想是 将...; 4、STL 算法 操作对象 STL 算法 操作对象 是 " STL 容器中的元素 " , 所有的 STL 算法 , 操作 容器元素时 , 会将 STL 容器中的 内容 复制一份 , 对 容器中元素的...副本 进行操作 , 之后再将副本返回 ; 二、STL 算法分类 STL 算法分类 : 分为以下四类 ; ① 非可变序列算法 : 此类算法 不修改 STL 容器中的元素内容 , 如 : 搜索 / 计数

    23510

    三十分钟掌握STL

    为了具有足够通用性,STL主要依赖于模板而不是封装,继承和虚函数(多态性)——OOP的三个要素。你在STL中找不到任何明显的类继承关系。...提示 确保在编译使用了STL的程序中至少要使用-O优化来保证内联扩展。STL提供了大量的模板类和函数,可以在OOP和常规编程中使用。...2)           容器是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。...函数和函数对象 STL中,函数被称为算法,也就是说它们和标准C库函数相比,它们更为通用。STL算法通过重载operator()函数实现为模板类或模板函数。...由于STL以模板为基础,所以能用于任何数据类型和结构。 转自 http://net.pku.edu.cn/~yhf/UsingSTL.htm

    1.3K40

    STL学习笔记(1)STL 概述

    STL 基本概念 STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统 称。...STL 几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用 机会。...迭代器:扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将 operator* , operator-> , operator++,operator–等指针相关操作予以重载的 class...STL 优点 STL 是 C++的一部分,因此不用额外安装什么,它被内建在你的编译器之内。 STL 的一个重要特性是将数据和操作分离。数据由容器类别加以管理,操作则由可定制的算法定义。...STL 具有高可重用性,高性能,高移植性,跨平台的优点。 高可重用性:STL 中几乎所有的代码都采用了模板类和模版函数的方式实现,这相比于传统的由函数和类组成的库 来说提供了更好的代码重用机会。

    93130

    STL库基础学习

    目录 1.什么是STL库 2.几种常见的STL模板 (1)vector 1.vector向量模板 2.vector迭代器 3.常见方法与用法 (2)list (3)queue和stack (...4)set和map 3.几种STL 的时间复杂度比较 ---- 1.什么是STL库 ◦ STL 又称为标准模板库,是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构...2.几种常见的STL模板 ◦ 现在,我来介绍 STL 中常用的一些模板类 (vector, list, queue, stack, set, map)。...同样所有支持访问所有元素类模板都有自己的迭代器。...模板都是在std命名空间下的,若要简写,则必须使用using namespace std; using namespace std; int main() { vectorvec; //将

    86540

    C++ STL详解

    STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类 组成的库来说提供了更好的代码重用机会...它是在一个有效的框架中完成这些算法的——你可以将所有的类型划分为少数的几类,然后就可以在模版的参数中使用一种类型替换掉同一种类中的其他类型。...STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我们指定容器中元素的数据类型...概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。几乎STL提供的所有算法都是通过迭代器存取元素序列进行工作的,每一个容器都定义了其本身所专有的迭代器,用以存取容器中的元素。...,同时也为某些算法执行期间产生的临时对象提供机制 中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器

    12210

    STL(标准模板库)

    STL提供了一组表示容器 迭代器 函数对象 和算法的模板。容器是一个与数组类似的单元,可以存储若干个值。...要使类成为通用的,应将它设计为模板类,STL在头文件中定义了一个vector模板 要创建模板对象,可使用通常的表示法来指出所要使用的类型 另外vector...容器模板都接受一个可选的模板参数 该参数指定使用哪个分配器对象来管理内存。...如果省略该参数模板的值,则容器模板将默认使用allocator类。...他是一个广义的指针,事实上,它可以是指针,也可以是一个可对其执行类似指针的操作 如解除引用和递增的对象 稍后将知道,通过将指针广义化为迭代器 让STL能够为各种不同的容器类提供统一的接口,每个容器类都定义了一个合适的迭代器

    16020

    STL简介

    它是在一个有效的框架中完成这些算法的——你可以将所有的类型划分为少数 的几类,然后就可以在模版的参数中使用一种类型替换掉同一种类中的其他类型。   ...体积很小,只包括几 个在序列上面进行简单数学运算的模板函数,包括加法和乘法在序列上的一些操作。中则定义了 一些模板类,用以声明函数对象。...STL容器就为我们提供了这样的方便,它允许我们重复利用已有的实现构造自己的特定类型下的数 据结构,通过设置一些模版类,STL容器对最常用的数据结构提供了支持,这些模板的参数允许我们指定容器中 元素的数据类型...软件设计有一个基本原则,所有的问题都可以通过引进一个间接层来简化,这种简化在STL中就是用迭代器来完 成的。概括来说,迭代器在STL中用来将算法和容器联系起来,起着一种黏和剂的作用。...,同时也为某些算法执行期间产生的 临时对象提供机制,中的主要部分是模板类allocator,它负责产生所有容器中的默认分配器。

    1.3K20

    初识STL

    STL C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。...STL 几乎所有的代码都采用了模板类或者模板函数,这相比传统的由函数和类组成的库来说提供了更好的代码重用机会。...迭代器:扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator* , operator-> , operator++,operator–等指针相关操作予以重载的class...三大组件介绍 容器 几乎可以说,任何特定的数据结构都是为了实现某种特定的算法。STL容器就是将运用最广泛的一些数据结构实现出来。...迭代器的设计思维-STL的关键所在,STL的中心思想在于将容器(container)和算法(algorithms)分开,彼此独立设计,最后再一贴胶着剂将他们撮合在一起。

    12710

    【C++】模版+STL简介

    所以其实模板就是将本来应该我们做的重复的事情交给了编译器。 在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。...比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码。...栈空间不足时需要我们手动异地扩容 2.2类模板的实例化 类模版都是显示实例化,类模板名字不是真正的类,而实例化的结果才是真正的类。...return 0; } 一般情况下如果函数模板遇到不能处理或者处理有误的类型,为了实现简单通常都是将需要特殊处理的类型的函数直接给出。...STL是基于模板的,这意味着它是类型无关的。开发者可以用任何符合要求的数据类型(如基本数据类型、用户定义类型等)来使用STL提供的容器和算法,从而提高了代码的灵活性。

    6910

    三十分钟掌握STL

    为了具有足够通用性,STL主要依赖于模板而不是封装,继承和虚函数(多态性)——OOP的三个要素。你在STL中找不到任何明显的类继承关系。...提示 确保在编译使用了STL的程序中至少要使用-O优化来保证内联扩展。STL提供了大量的模板类和函数,可以在OOP和常规编程中使用。...2)           容器是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。...为定义输出流迭代器,STL提供了模板类ostream_iterator。这个类的构造函数有两个参数:一个ostream对象和一个string值。...函数和函数对象 STL中,函数被称为算法,也就是说它们和标准C库函数相比,它们更为通用。STL算法通过重载operator()函数实现为模板类或模板函数。

    2.1K80

    【笔记】C++标准库: 体系结构与内核分析(上)

    使用C11新增的区间循环配合auto让容器迭代写起来更方便: STL的容器可以分为三大类, 定义在同名头文件: 序列型容器: 数组或链表实现的列表, 数据组织紧凑 关联型容器: 红黑树实现的set和...模板 模板编程主要分为: 模板类: 最简单的模板, 在声明类的上一行加上template, 用T表示当前未定的类型名, 可以有多个....实例化模板类时必须知名模板参数的类型, 因为实例化模板类对于编译器来说没有任何可供推理的线索 模板函数: 和模板类相近, 在函数定义之前加template, 区别在于由于函数参数的独一性...模板成员: 也就是在类内的模板函数. 此时对于普通类的类内模板成员函数, 其实参可以由编译器自动推导....但对于模板类中的模板函数, 使用时则需要提供对应模板类的模板参数, 然后函数自己的模板实参由编译器自动推导. 在类外定义的时候需要提供两个模板标识符.

    1.2K30

    C++实现 STL 标准库和算法(一)实验楼笔记

    想 掌握C++强大标准库 通过本次课程,你将学习到 c++ template ,异常处理 ,并回顾数据库的部分知识 ,初步掌握 STL 开发 ,避免重复制造轮子。...如果你没有使用过 STL,那么你是不爱 c++ 的,STL的原名是“Standard Template Library”,翻译过来就是标准模板库。...STL 由算法,容器,迭代器,适配器,仿函数(函数对象),空间适配器六大部件组成 。我们将主要讲解容器,迭代器,算法和仿函数。适配器的部分会交给学员来实现,而空间适配器不会太过于深入。...从上往下学习STL,学习曲线不再那么陡峭。 2.容器是啥呀? 鱼缸是容器,瓶子是容器,饭碗也是容器,STL 的容器也不列外。...这里的容器首先是一个模板类,在类中实现对数据的操作,而包含这样的类的实现就叫一个容器。

    1.7K20

    【c++】STL简介

    前言 当我们学习完C++的基础语法知识以及类和对象、模板等知识之后,就可以正式进入STL的学习了。...一、什么是STL STL(Standard Template Library,标准模板库),是c++标准库的一个重要组成部分,它提供了一系列通用的类模板和函数,是一个包罗数据结构和算法的软件框架...算法:对容器进行操作的函数模板集合,包括排序、查找、合并、替换等常用算法。...配接器:分为函数配接器、容器配接器、迭代器配接器,可以将一个类的接口转换为另一个类的接口,使得原本因接口不兼容而不能合作的类可以一起运作。...本地化:STL本地化是指将STL库中的一些函数和类适应不同的语言和文化环境,以便更好地适应不同地区的用户需求。比如日期和时间格式、字符编码、数字格式以及货币和货币符号的本地化处理。

    22510

    【c++】初阶模版与STL简单介绍

    是编译器根据被实例化的类型生成具体类的模具 类模板实例化与函数模板实例化不同,类模板实例化需要在类模板名字后跟,然后将实例化的类型放在中即可,类模板名字不是真正的类,而实例化的结果才是真正的类...T> Stack::~Stack() { if(_a) delete[] _a; _top = _capacity = 0; } 类模板中函数放在类外进行定义时,需要加模板参数列表 STL...我们后面学习STL要阅读部分源代码,主要参考的就是这个版本 STL的六大组件: 容器(Containers):这些是用来管理某一类对象的集合的数据结构。...STL容器分为序列式容器(如vector、list、deque等)和关联式容器(如set、map等) 迭代器(Iterators):迭代器是一种使程序员能够遍历容器中的元素,而不需要了解容器内部实现细节的对象...分配器(Allocators):用于定义内存模型,允许STL容器管理存储空间的分配和释放。 STL确实是现代C++编程的基石,它的设计哲学、灵活性以及对编程效率的提升有着深远的影响

    12210
    领券