首页 > 其他分享 >STL简介

STL简介

时间:2023-08-24 20:24:09浏览次数:36  
标签:iterator STL 简介 traits template 模版 class 指针

  • STL六大部件
  1. 容器 (class template)
  2. 分配器(为容器服务,class template)
  3. 算法 (function template)
  4. 迭代器(泛化的指针,容器和算法之间的桥梁)(class template)
  5. 适配器 (class template)
  6. 仿函数 (class template),为算法提供服务。 
  • 数据和操作放在一起就是走 OOP类 道路,数据和操作分开 走的就是 GP泛型编程 的道路,迭代器就是数据和操作之间的桥梁。(可以闭门造车)
  • 【begin , end)容器是前闭后开区间的设计
  • c++标准库之必要基础:操作符重载,模版。
  • 特化:一个模版,传一个特定类型有特定的版本。
  • 偏特化:如果一个模版如果需要两个模版参数,传了第一个特定类型;如果一个模版需要一个模版参数是任意类型T,将某个参数特化为指针泛型T*,就是范围的偏特化将任意类型编特化为指针类型。个数的偏特化,范围的偏特化。
  • iterator是一个类,设计了大量的操作符重载,使得它的行为更像指针(smart pointers)。iterator 有五个typedef,定义了一些属性iterator_category(iterator类别),difference_type(两个iterator之间的距离),value_type(iterator所指元素的type)等.
  • 标准库的算法会问iterator的一些属性,iterator会回答。但是如果类型就是一个native指针,不是iterator,算法怎么提问?加一个中间层。Traits技法, iterator Traits技法用于分开class iterator 和 non-class iterator。traits类的设计借助了模版偏特化的特性。
  • 标准库存在很多类型的traits,如type traits,iterator traits,char traits,allocator traits等。
  • 迭代器以指针为塑形,设计了大量的操作符重载,使得它的行为更像指针,迭代器含有配合容器使用的一些数据。

 

标签:iterator,STL,简介,traits,template,模版,class,指针
From: https://www.cnblogs.com/wuyun--wy/p/17185245.html

相关文章

  • LangChain-Chatchat的简介
    LangChain-Chatchat的简介LangChain-Chatchat(原Langchain-ChatGLM):基于Langchain与ChatGLM等大语言模型的本地知识库问答应用实现。下面是他的官方介绍:......
  • Sigma-Delta ADC 简介
    本文转自:什么是Sigma-DeltaADC(linkchip.cn) Sigma-DeltaADC是一种目前使用最为普遍的高精度ADC结构,在精度达到20位以上的场合,Sigma-Delta是必选的结构。通过采用过采样、噪声整形以及数字滤波技术,降低对模拟电路的设计要求,实现了其他类型的ADC无法达到的高精度和低功耗。通......
  • 无涯教程-PHP - 简介
    PHP7是最期待的,它是PHP编程语言的主要功能版本。PHP7于2015年12月3日发布。本教程将以简单直观的方式教您PHP7的新功能及其用法。无涯教程假设您已经了解旧版本的PHP,现在就可以开始学习PHP7的新功能。使用下面的示例-<html><head><title>OnlinePHP-7ScriptE......
  • MyBatis-Plus课程简介
         ......
  • 鲁迅简介(逃
    ......
  • C++基础-STL queue
    queue队列1、特性在一端插入元素,在一端取出元素,具有先进先出的特点,插入和删除都较快。2、适用情况需要一个先进先出结构时使用。3、头文件#include<queue>4、复杂度插入:push(),O(1)删除:pop(),O(1)查找(队列头):front(),O(1)5、定义及常用函数//默认为用deque容器实现的queue;queue<int......
  • 云原生第十周——promethus简介(上)
    监控简介:监控的价值:长期趋势分析:通过对监控样本数据的持续收集和统计,对监控指标进行长期趋势分析。例如,通过对磁盘空间增长率的判断,我们可以提前预测在未来什么时间节点上需要对资源进行扩容。对照分析:两个版本的系统运行资源使用情况的差异如何?在不同容量情况下系统的并发和......
  • C++简介
    一、C++介绍本贾尼.斯特劳斯特卢普,于1979年在贝尔实验室负责分析UNIX系统内核流量的分布情况时,特别希望有一种更加模块化的工具,于1979.10开始着手研发一款新的编程语言,在C语言的基础上增加了面向对象的机制,也就是C++,1983年完成了C++的第一个版本C++与C的关联和重要区别:(面试题)......
  • 《HTML CSS JavaScript 网页制作》JavaScript基本知识(简介、语法、事件、对象)
    一、JavaScript简介1、JavaScript特点脚本语言:是一种解释型的脚本语言,在程序运行过程中逐行进行解释;基于对象:可以创建对象,也能使用现有的对象;简单:采用的是弱类型的变量类型,对使用的数据类型未作出严格的要求;动态性:采用事件驱动,不需要经过web服务器就可以对用户的输入作出响应;跨平台......
  • C++基础-STL stack 栈
    stack栈1、特性在一端插入元素,在同一端删除元素,具有先进后出的特性。底层实现一般用list或deque,封闭头部即可,数据先进后出,不支持随机访问。2、适用情况需要一个先进后出结构时3、头文件#include<stack>4、复杂度插入:push(),O(1)删除:pop(),O(1)查找(栈顶):top(),O(1)5、定义及常用......