当前位置: 首页 > news >正文

做爰全过程的视频的网站关键词优化seo公司

做爰全过程的视频的网站,关键词优化seo公司,衢州在建火车站,霞山手机网站建设公司本文已收录至《C语言和高级数据结构》专栏! 作者:ARMCSKGT ​​​​​​​​ 文章目录 前言正文简介关于STL各种版本 STL组件容器迭代器配接器(适配器)算法仿函数空间配置器 STL的重要性学习STL的意义如何学习STL STL的缺陷 最后 前言 STL(standard tem…

C++初级-STL简介

本文已收录至《C++语言和高级数据结构》专栏!

作者:ARMCSKGT

​​​​​​​​ CSDN


文章目录

  • 前言
  • 正文
    • 简介
      • 关于STL
      • 各种版本
    • STL组件
      • 容器
      • 迭代器
      • 配接器(适配器)
      • 算法
      • 仿函数
      • 空间配置器
    • STL的重要性
      • 学习STL的意义
      • 如何学习STL
    • STL的缺陷
  • 最后


前言

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。
STL组件一图概览


正文

简介


关于STL

STL(Standard TemplateLibrary)标准模板库,从根本上说,STL是一些数据结构的集合,因为是组织和存放数据简称为容器,这些“容器”有list、vector、set、map等,STL也是算法和其他一些组件的集合。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。

STL包含了诸多在计算机科学领域里常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。从逻辑层次来看,在STL中体现了泛型化程序设计的思想(generic programming)。在这种思想里,大部分基本算法被抽象,被泛化,独立于与之对应的数据结构,用于以相同或相近的方式处理各种不同情形。

STL作者亚历山大·斯特潘诺夫(Alexander Stepanov),STL之父,并因此而荣获第一届Dr. Dobb’s 程序设计杰出奖,现在是Adobe公司首席科学家。他曾是康柏电脑公司的副总裁和首席科学家,AT&T实验室副总裁和首席架构师,SGI服务和超级计算机业务首席技术官。


各种版本

  • 原始版本
    Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖。
  • P. J. 版本
    由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。
  • RW版本
    由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。
  • SGI版本
    由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。如果我们想学习STL源码,建议阅读SGI版本。

STL组件


容器

  • 序列式容器
    -string字符串
    -vector顺序表
    -array数组
    -list链表
    -deque双端队列
  • 关联式容器
    -set集合(底层是红黑树)
    -map映射(底层是红黑树)

    这些容器在实现的基础上通过模板类进行封装,除了string以外,其他容器都支持泛型;关于序列式容器,里面的元素是线性的,而关联式容器里面的元素是有一定关系的,一般为K或KV(key=value)模型。其中一些容器还可以变换成具有其他特性的相同容器,例如wstring宽字符串,multimap多键映射等。

迭代器

  • iterator普通迭代器
  • const_iterator常量迭代器
  • reverse_iterator反向迭代器
  • const_reverse_iterator常量反向迭代器

    我们知道循环可以称为迭代,当我们遍历一个数组时,既可以用 [ ]数组下标 访问,也可以用 数组首地址偏移量 解引用访问,STL为了统一大部分容器的访问方式,定义了迭代器访问,迭代器可以想象成是对指针的封装,我们使用只需要 解引用 然后 ++ 或就能到任何元素然后进行访问或修改,这样使我们学习STL的成本降低了不少,而且后期很多迭代器都支持 范围for 语法糖,而范围for的实现原理就是基于迭代器的!

    迭代器扮演容器与算法之间的胶合剂,是所谓的“泛型指针”;所有STL容器都附带有自己专属的迭代器,原生指针(Native pointer)也是一种迭代器。

配接器(适配器)

  • 容器适配器
    在STL中,容器适配器有queue队列,stack栈等,这些容器我们在使用C语言时发现其存储结构既可以使用顺序表也可以使用链表,也就是顺序栈,顺序队,链栈和链队列,所以这些容器只需要对某些序列容器进行封装而改变该容器的行为就能实现,且这些容器都具有相同的插入删除例如push_back和pop_back等即可,这样就完成了对象的组合!
  • 迭代器适配器
    基于容器适配器的介绍,我们可以对某个容器进行封装,改变该容器的行为就能实现适配器容器,那么对于迭代器来说,如果我们对普通迭代器进行封装,就能实现反向迭代器,因为我们只需要改变普通迭代器的行为就行了。
  • 仿函数适配器
    仿函数本身就非常厉害,仿函数适配器则可以无限制的创造出各种可能的表达式,关于仿函数的,我们在后面会结合代码进行介绍。

算法

  • find查找
  • swap交换
  • sort排序
  • reverse逆置
  • 等…

    我们在学习数据结构时,算法是必不可少的,增删查改难免需要算法的优化,对于一些固定常用的算法,库中已经帮我们实现了,我们只需要使用algorithm头文件即可,这些算法对于大部分容器都是适配可用的,因为迭代器是统一的,这是当初设计者的巧妙之处,而对于某些特殊的数据结构其算法会在类中实现封装在一起,这样就实现了算法的高效利用!各种常用算法,如Sort,Search,Copy,Erase,从实现的角度来看,STL算法是一种Function Templates。

仿函数

仿函数的实现是通过类中重载 () 运算符实现的,这样我们可用将对象当作函数使用,仿函数的出现使我们的函数作为参数传参更加方便,在C语言qsort中,比较函数需要自己实现和传参,而在C++中只需要传递仿函数对象即可,这样既好理解也方便使用,在C++的一些比较算法和关联式容器中,就需要函数对象控制比较,例如排序的升序和降序通过less和greater仿函数控制,map的建树比较规则也是通过less和greater控制,所以仿函数的地位是不可比拟的!


空间配置器

我们学习动态内存管理时,通过new可用向堆申请空间,使用完毕后delete释放,但是底层其实是C++语言去调用系统接口申请内存,这样在一般的简单使用场景下没有问题,但是对于频繁申请和释放内存时,效率非常低。于是我们可用预先向系统申请一大块空间进行管理,需要空间时去这一大块空间上取,释放时伪释放,这样就不需要总是通过系统接口申请内存了,我们只需要维护好这一大块空间即可,这样就极大的提高了内存使用效率,而这种技术也称为内存池技术,对于频繁申请和释放内存的场景非常实用;STL引入内存池技术也是为了极致的性能发挥!


STL的重要性


学习STL的意义

STL在日常使用的非常之多,其实现原理和里面的一些算法思想非常值得我们去学习,而且在面试时公司必考。网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。


如何学习STL

  • 学习STL的使用
  • 了解STL的底层实现
  • 熟练使用STL甚至扩充STL

    简单总结一下:学习STL的三个境界:能用,明理,能扩展 。
    出自《STL源码剖析》

STL的缺陷


  1. STL库的更新太慢了。这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订;C++11出来已经相隔了13年,STL才进一步更新。
  2. STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的。
  3. STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。
  4. STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。

最后

STL的简单介绍到这里就介绍了,学习和熟练使用STL对于我们的C++学习之路有着极大的帮助,后面我们会对STL中的常用容器进行详细的介绍和实现,相信STL会助力我们更加高效的开发!

本次 <C++ STL-简介> 就先介绍到这里啦,希望能够尽可能帮助到大家。

如果文章中有瑕疵,还请各位大佬细心点评和留言,我将立即修补错误,谢谢!
在这里插入图片描述

🌟其他文章阅读推荐🌟
C++ <模板> -CSDN博客
C++ <内存管理> -CSDN博客
C++ <类和对象 - 下> -CSDN博客
C++ <类和对象 - 中> -CSDN博客
C++ <类和对象 - 上> -CSDN博客
🌹欢迎读者多多浏览多多支持!🌹

​​

http://www.hkea.cn/news/669922/

相关文章:

  • 政府网站群集约化建设网络暴力事件
  • 可以做卷子的网站游戏app拉新平台
  • 长沙优化网站关键词社区营销
  • 个人网站制作价格表重庆关键词优化
  • 网站开发ideseo优化网站模板
  • 关于制作网站收费标准怎样把个人介绍放到百度
  • 网站建设 绵阳百度开放平台
  • discuz修改网站标题微信小程序开发平台
  • 怎么做国内网站吗seo顾问培训
  • 网站排名不稳定怎么办seo+网站排名
  • 做网站要淘宝热搜关键词排行榜
  • 做网站 创业 流程网络建站流程
  • 怎么做购物网站系统文本广州网络营销推广
  • 网站后台管理系统cms推广seo网站
  • 企业网站备案注销百度推广登陆平台
  • 重庆如何软件网站推广网站优化seo
  • 最专业的佛山网站建设价格3小时百度收录新站方法
  • wordpress门户建站html网页完整代码作业
  • 子域名 做单独的网站广州seo外包公司
  • 凡科建设网站的步骤永久免费无代码开发平台网站
  • 建设一个百度百科类网站网站排名优化的技巧
  • 自己做网站可以吗淄博做网站的公司
  • 个人做健康网站好吗宁波网站制作与推广价格
  • 长沙有哪些做网站的连云港seo优化公司
  • 青羊区定制网站建设报价搜索引擎营销方案
  • 淘宝优惠券查询网站怎么做域名备案官网
  • wordpress自定义url优化教程网下载
  • 模板网站和定制网站百度搜索引擎的网址
  • 企业建设网站公司哪家好app拉新推广接单平台
  • 老虎淘客系统可以做网站吗江西省水文监测中心