C++ STL 学习体会

C++STL简介 STL简介。开始学习STL之前,是不是得先知道STL是个什么东西,以及如何学习STL呢?话不多说,开始我们今天的内容!是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。本篇博客主要介绍了有关STL的历史,主流版本,六大组件,以及其优缺点和学习方法等内容。希望能帮助到大家。♥C++ 阅读详情

STL的设计目标,是将不同的算法和数据结构结合在一起,并获取最佳效率。在不同的数据结构中,要获取最佳效率,其所实现的算法必然有差异性和适应性。从另一个角度,即使是对同一种类型的数据结构(STL中,可直接对应于容器),因为对该容器有多种不同的操作,首要的设计目标,自然是要实现支持所有操作的最佳效率,但现实的情况是,针对某一特定数据结构的实现,在其之上的多种操作在各自的最佳效率上可能存在彼此冲突的地方。因此在STL中容器本身的实现也是一种整体上的平衡考虑,以达到系统最优。

平衡,是一个有深刻内涵的词汇。我们在实现平衡,达到平衡的过程和手段中,其实做的是一系列的选择。选择,到底是最终趋向于事物的平衡,还是倾斜,或是混乱,取决于对问题的理解深度,知识的积累程度。特化到STL的应用,我们如何选择容器,如何选择算法,选择不是瞎选,是要明智的选择。需要了解容器的类型,实现的细节,算法的原理,更要了解问题域,才能是选择达到最佳的效率。

下面节选自《Effective STL》中的一段:

  • 你是否要在容器的任意位置插入新元素?如果需要就选择序列容器;关联容器是不行的。
  • 你是否关心容器中的元素是如何排序的?如果不关心,则哈希容器是一个可行的选择方案;否则,你要避免哈希函数。
  • 你选择的容器必须是标准C++的一部分吗?如果必须是,就排除了哈希容器,slist和rope。
  • 你需要那种类型的迭代器?如果它们必须是随机访问迭代器,则对容器的选择被限定为vector,deque和string。或许你也可以考虑rope。
  • 当发生元素的插入或删除操作时,避免移动容器中原来的元素是否很重要?如果是,就要避免连续内存的容器。
  • 容器中数据的布局是否需要和C兼容?如果需要,就只能选择vector。
  • .........

在STL中容器,算法和迭代器是第一等的公民。数据由容器来管理,操作由算法来实现,迭代器则是两者之间的粘合剂,使任何算法可以和任何容器交互运作。只要容器支持算法所要求的迭代器类型。

序列式容器:vector, list, deque.

关联容器:set,

C++ STL 知识点总结 概述 简介 简单介绍:C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈等。 STL的一个重要特点就是数据结构和算法的分离。例如,STL中sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。 STL另一个重要特性是它不是面向对象的,主要依赖于... 阅读详情

相关推荐

C++中的STL

C++STL部分的内容,主要提供了一些同样的模板类和函数模板,详细结合代码对容器、算法、迭代器进行了例子讲解。

人工智能方向…… 2766

STL学习总结

主要总结了自己学习STL的心得,适合于有基础者学习

我对STL的一些看法(一)初步认识STL

后面一段时间我将会给大家分享我自己学到STL以及应用的时候遇到的问题还有他的一些精髓,可能开始的逻辑会有些乱吧,不过后面还会不断的整理和优化,让自己看明白也让更多的读者看的清楚。 最近刚闲下来,先说说什么是STL: 不知道你是否有过这样的经历。在大学,你准备着手完成数据结构老师所布置的家庭作业时,或者在你为你所负责的某个软件项目中添加一项新功能时,你发现需要用到一个链表(List)或者是映射表(

yolo模型训练找我,AI游戏合作找我 6902

STL学习心得

STL概述 STL组件 1.容器(Container) - 管理某类对象的集合 2.迭代器(Iterator) - 在对象集合上进行遍历 (注意:这些集合可能是容器,也可能是容器的子集。) 3.算法(Algorithm) - 处理集合内的元素,算法作用于容器。(算法提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。) 4.容器适配器(container adaptor) ...

weixin_44678167的博客 1045

c++stl 学习心得

一、c++和c的区别: 1.函数默认值。 在C++中我们在定义或声明一个函数的时候,有时会在形参中给它赋一个初始值作为不传参数时候的缺省值,例如:int is(int a=100);代表没有传参调用的时候,自动给a赋一个10的初始值,这在c语言里是没有且错误的语法。 2.函数重载 C语言中产生函数符号的规则是根据名称产生,这也就注定了c语言不存在函数重载的概念。而C++生成函数符号则考虑了函数名、参数个数、参数类型。 #include <iostream> using names.

zjsru_Beginner的博客 548

STL学习总结(C++)(待完成)

首篇博客C++STL简介组件一:容器1. 顺序容器1.1 vector1.2 deque1.3 list2. 关联容器2.1 set和multiset2.2 map和multimap3. 容器适配器3.1 stack3.2 queue3.3 priority_queue组件二:迭代器组件三:算法合理的创建标题,有助于目录的生成如何改变文本的样式新的改变插入链接与图片如何插入一段漂亮的代码片生成一个...

ZeroGor的博客 854

C++STL学习心得

我爱柳神~我以后一定要见到她! STL之动态数组vector(矢量)的使用: 头文件:#include和using namespace std; vector,stack,queue,map,set这些在c++里都叫做容器,这些容器的大小都可以用.size()获取到,就像string可以用.length()获取到一样。另C++中string类的length和size是没有区别的,通常用length(). vector不管在main函数里定义,还是在全局中定义,他都能 够将所有的值初始化为0. vector&

weixin_45927721的博客 184

STL/SOCKET/C++流/多线程/正则表达式

假期一个半月就这么过完了,虽然天天都是百无聊赖的看电影、玩游戏,本来打算看一遍《c++primer》结果只看了两三页。我发现想到需要用什么了再去网上搜、书上找资料等,然后实际操练写出代码来,这样学习的效率最高。比起一天天的抱着一本《零起点学通C++》,从第一页开始顺着页码往后看效率要高多了。兴趣是最好的老师,按着页码顺序看一本C++书籍的时候,往往会觉得有些章节暂时没什么兴趣,看了也写不出来,枯草

软件架构农 2996

C++ STL模板库学习之路(前言)

在正式开始复习STL模板库之前,首先要知道什么是STL模板库。一:什么是STLSTL是Standard Template Library的简称,中文名标准模板库,惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,se...

阿呆的隐秘角落 276

C++常用STL讲解

关于STL(标准模板库) Standard Template Library,缩写:STL STL是一个C++软件库,里面包含算法(algorithms)、容器(containers)、函数(functions)、迭代器(iterators) C语言版本 #include<stdio.h> int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d",a+b); return 0; } C++版本 #

折叠伞的博客 5970

c++STL详解

长文带你深度了解c++STL

ltzoro的博客 7517

C++中的STL

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考网上有句话说:“不懂STL,不要说你会C++”。STLC++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

Z15255808023的博客 1万+

STL教程:C++ STL快速入门

1.STL引言 STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STLC++ 标准库的一部分,不用单独安装。C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列...

梦心之魂的博客 1万+

C++_STL总结

1、STL STL是标准模板库:是高效的C++程序库,其采用泛型编程思想对常见数据结构(顺序表、链表、栈和队列、堆、二叉树、哈希)和算法(查找、排序、集合、数值运算)等进行封装,体现着泛型编程程序设计思想以及设计模式,已被集成到C++标准程序库中。 STL中包含了容器、适配器、算法、迭代器、仿函数以及空间配置器。 STL设计理念:追求代码高复用性以及运行速度的高效率。 2、STL六大组件 容器 分...

lhn的博客 327

关于运算符重载和stl的心得体会

    在最近的c++学习中,我接触到了类学习中的重载运算符,还有c++中的stl。下面写一下关于这两个内容的心得体会。    首先是重载运算符,通过以前的学习可以知道,定义的变量可以比较大小,无论是整数型(int)变量还是符型(string)变量,都能比较大小。不仅仅是比较大小,还可以进行运算。那么就有问题了,我们定义的类可以进行这些操作吗?答案是肯定的。其实,所谓的起始的变量类型的运算法则是...

Hui_Sir_的博客 810

STL学习体会1

最近在开始学习STL,记录一些学习的心得和体会,如有不足,期待大家批评指正! STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。这种现象有些类似于Microsoft Visual C++

吃斋念佛猫的专栏 725

STL总结_程序设计B

   第八周开始学习STL,做了一份图书管理的后台程序,从开始做到现在不停地修改程序,我感觉到写程序就是落落落落落落落落落,只有最后程序能正常运行的时候才是起。但是每做一次改一次程序,尽管花费的时间很多,同时也能发现一些在以后学习过程中要避免的问题。    做第一次作业的时候,当时大概是从下午三点左右到了第二天的两点,这段时间中吃个饭都觉...

weixin_45655385的博客 298

关于C++STL学习与再认识(一)

以前学习c++的时候,对比较基础的两点有一定的害怕,就是涉及指针的部分和STL。虽然一直在指针方面下功夫学习,也写过文章记录心得,希望以后碰到指针的问题能够解决。至于STL,在之前对基本的算法有了实现,想对STL有一个较深的认识,写下文章记录学习过程。STL:标准模板库(Standard Template Library—STL)容器用途:操作大量数据是会某种用到容器。c语言只有一种内置容器,数组。

u012935756的专栏 558
上一篇: Jdk 1.8下的JVisualVM无法监测Apache Tomcat 7.0.42
下一篇: 利用对象的Class辅助实现对多态容器中元素的查找
simzha01
博客等级 码龄12年 1粉丝 24原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值