zoukankan      html  css  js  c++  java
  • C++标准模板库STL

    C++重载操作符

    this指针

    lambda表达式(匿名函数)

    STL源码剖析

    • traits

    • allocator原理:比如16个自由链表是怎么回事,是如何向内存池申请内存的,容量不够时是如何扩容的?

    • 各个容器的底层原理,这是重点!还要知道,在具体场景下,如何选择哪些容器,可选的多种容器里,各个容器的性能如何?像map和set底层的红黑树的原理,哈希表的原理,deque的原理等等

    • 仿函数:这部分篇幅很小,看起来相对轻松

    • 迭代器:要结合和容器,理解各种迭代器的底层原理

    • 算法:需要知道常用的算法,还需要了解Lambda表达式,因为算法常常结合Lambda一起使用

    一、STL六大部件:

    stl

    STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。

    Container 通过 Allocator 取得数据储存空间
    Algorithm 通过 Iterator 存取 Container 内容
    Functor 可以协助 Algorithm 完成不同的策略变化
    Adapter 可以修饰或套接 Functor、Iterator。

    1. 容器(containers):

    中文标准库:容器库

    转载:容器类讲解

    转载:容器复杂度

    转载:C++STL中常用容器优缺点

    容器库是STL内部封装好的数据结构,是一种class template。

    1.1.序列容器:array、vector、list、deque、forward_list

    • 1.1.1.array、vector和数组

    array

    vector

    数组、array和vector三者的区别和联系

    • 1.1.2.list

    list和forward_list

    • 1.1.3. deque

    deque

    1.2.关联容器

    • 1.2.1map set tuple pair

    map的元素是pair

    tuple是一个固定大小的不同类型值的集合,是泛化的std::pair,tuple可以用于函数返回值多个的时候,和pair不同的是,pair只有两个元素,而tuple可以有多个元素(不限于两个)

    tuple

    pair

    map、multimap、unordered_map(hash_map)

    set、multiset、unordered_set(hash_set)

    2. 算法(algorithm):

    是一种function template,常用的有sort、search、copy等,STL中算法与数据相分离(不像面向对象中将算法与数据封装在class中)。

    中文标准库:算法库

    algorithm

    3. 迭代器(iterator):

    类似于泛化的指针,用来访问可迭代序列。

    迭代器:iterator

    const_iteratoriterator以及头文件iterator
    cbegin、cend,crbegin、crend都是const型的迭代器,它们不能修改容器的值

    const_iterator可以用于const型的容器或非const的容器,它自身的值可以改(可以指向其他元素),但不能改写其指向的元素值

    4. 适配器(adapter):

    提供转换操作,有容器适配器、仿函数适配器、迭代器适配器。

    栈stack

    5. 分配器(allocator):

    负责空间配置与管理,用以支持容器。是一种class template。

    6. 仿函数(functor):

    行为类似函数,就是使一个类的使用看上去像一个函数。它的具体实现就是通过在类中重载了operator(),使这个类具有了类似函数的行为。

    中文标准库:functional头文件

    仿函数:functional

    常见typedef

    下表显示了顺序容器和关联容器中常用的typedef,这些typedef常用于变量、参数和函数返回值的一般性声明

    类型别名 描述
    value_type 容器中存放元素的类型
    reference 容器中存放元素类型的引用
    const_reference 容器中存放元素类型的常量引用,这种引用只能读取容器中的元素和进行const操作
    pointer 容器中存放元素类型的指针
    iterator 指向容器中存放元素类型的迭代器
    const_iterator 指向容器中存放元素类型的常量迭代器,只能读取容器中的元素
    reverse_iterator 指向容器中存放元素类型的逆向迭代器,这种迭代器在容器中逆向迭代
    const_reverse_iterator 指向容器中存放元素类型的逆向迭代器,只能读取容器中的元素
    difference_type 引用相同容器的两个迭代器相减结果的类型(list和关联容器没有定义operator - )
    size_type 用于计算容器中项目数和检索顺序容器的类型(不能对list检索)

    二、std::string

    string Cstring QString string.h

    转载:何为STL

  • 相关阅读:
    Redis持久化
    《Hadoop权威指南·大数据的存储与分析》阅读笔记(未读完)
    《redis设计与实现》第一版 阅读笔记(未看完)
    LSMTree -> SStable 初体验
    Goland实现Set操作
    使用Goland操作Redis详解
    使用Python操作Redis详解
    学习笔记
    docker技术入门与实战 第三版
    Shell(笔记)
  • 原文地址:https://www.cnblogs.com/mmmmmmmmm/p/14638978.html
Copyright © 2011-2022 走看看