link-1-STL 标准模板库

STL(Standard Template Library,标准模版库)是C++语?言标准中的重要组成部分。STL以模
板类和模版函数的形式为程序员提供了了各种数据结构和算法的实现,程序员吐过能够充分的利利?用
STL,可以在代码空间、执?行行时间和编码效率上获得极?大的好处。
STL?大致可以分为三?大类:算法(algorithm)、容器?(Container)、迭代器?(iterator)。
STL容器?是?一些模版类,提供了了多种组织数据的常?用?方法,例例如:vector(向量量,类似于数
组)、list(列列表,类似于链表)、deque(双向队列列)、set(集合)、map(映像)、stack
(栈)、queue(队列列)、priority_queue(优先队列列)等,通过模版的参数我们可以指定容器?中的
元素类型。
STL算法是?一些模版函数,提供了了相当多的有?用的算法和操作,从简单的for_each(遍历)
到复杂的stable_sort(稳定排序)。
STL迭代器?是对C中的指针的?一般化,?用来将算法和容器?联系起来。?几乎所有的STL算法都是
通过迭代器?来存取元素序列列进?行行?工作的,?而STL中的每?一个容器?也都定义了了其本身所专有的迭代
器?,?用以存取容器?中的元素。有趣的是,普通的指针也可以像迭代器??一般的?工作。
熟悉了了STL后,你会发现,很多功能只需要?用短短的?几?行行就可以实现了了。通过STL,我们可
以构造出优雅?而且?高效的代码,甚?至?比你?自?己?手?工实现的代码效率还要?高很多。

关于pair
STL的<utility>头?文件中描述了了?一个看上去?非常简单的模版类pair,?用来表示?一个?二元组或元
素对,并提供了了按照字典序对元素对进?行行?大?小?比较运算符模版函数。

2.1 使?用pair

定义?一个pair对象表示?一个平?面坐标点:
pair<double, double> p;
cin >> p.first >> p.second;
pair模版类需要两个参数:?首元素的数据类型和尾元素的数据类型。pair模版类对象有两个成
员:first和second,分别表示?首元素和尾元素。
在<utility>中已经定义了了pair上的六个?比较运算符:<、>、<=、>=、==、!=,其规则是先?比
较first,first相等时再?比较second,这符合?大多数应?用的逻辑。当然,也可以通过重载这?几个运算符
来重新指定?自?己的?比较逻辑。
除了了直接定义?一个pair对象外,如果需要即时?生成?一个pair对象,也可以调?用在<utility>中定
义的?一个模版函数:make_pair。make_pair需要两个参数,分别为元素对的?首元素和尾元素。
在Ugly Numbers的实现代码中(1.1),就可以?用pair来表示推演树上的结点,first表示结点
的值,?用second表示结点是由?父结点乘以哪?一个因?子得到的。
<utility>看上去是?一个很简单的头?文件,但是<utility>的设计中却浓缩反映了了STL设计的基本
思想。有意深?入了了解和研究STL的朋友,仔细阅读和体会这个简单的头?文件,不不失为?一种?入?门的途
径。

pair<double, double> p;
cin >> p.first >> p.second;

原文地址:https://www.cnblogs.com/lanclot-/p/10915001.html

时间: 2024-10-10 13:21:08

link-1-STL 标准模板库的相关文章

C++ STL标准模板库

标准模板库 STL(StandardTemplate Library),即标准模板库,是一个具有工业强度的.高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中最新的也是极具革命性的一部分.该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法,为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性.这种现象有些类似于Microsoft Visual C++中的MFC(MicrosoftFound

STL 标准模板库

STL(Standard Template Library,标准模板库), 组成: STL可分为容器(containers).迭代器(iterators).空间配置器(allocator).配接器(adapters).算法(algorithms).仿函数(functors)六个部分. 容器部分主要由头文件<vector>,<list>,<deque>,<set>,<map>,<stack>和<queue>组成.对于常用的一

STL(标准模板库)理论基础,容器,迭代器,算法

基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. STL的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器和算法通过迭代器可以进行无缝地连接.几乎所有的代码都采 用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会.在C++标准中,STL被组织为下面的13

C++ STL标准模板库(list)

//list的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<list> using namespace std; /* 引用头文件 #include<list> list类本身是一个类模板 list链表中的迭代器list类模板的一个内部类 这个类实现了链表元素指针的功能 是一个线性链表结构,它的数据由若干个节点构成,每一个节点都包括一个 信息块(即实际存储的数据).一个前驱指针和一个后驱指针

C++ STL标准模板库(stack)

//stack的使用 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<stack> using namespace std; /* 引用头文件 #include<stack> stack类本身是一个类模板 stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,— —也就是说实现了一个先进后出(FILO)的数据结构. 1.empty() 堆栈为空则返回真 2.pop() 移除栈顶元素

STL标准模板库

Vector: 写vector时候碰到这样一段代码: for(int j=0;j<v1.size();j++) { printf("%d %d",j,v1[j]); printf("%d",v1.size()); if(v1[j]==4) { v1.insert(v1.begin(),5); //在访问元素之前插入元素,那么元素的顺序整体就后面移动一位,那么一直访问到的都是4 j++; } getchar(); } Notice: 如果在遍历中需要插入删除元素

C++的标准模板库STL中实现的数据结构之顺序表vector的分析与使用

摘要 本文主要借助对C++的标准模板库STL中实现的数据结构的学习和使用来加深对数据结构的理解.即联系数据结构的理论分析和详细的应用实现(STL),本文是系列总结的第一篇,主要针对线性表中的顺序表(动态数组)STL vector进行分析和总结. 引言 因为前段时间对台大的机器学习基石和技法课程进行了学习,发如今详细的实现中经常涉及到各种类型的数据结构,比方线性表.二叉树.图等,在使用这些数据结构时感到有些吃力.主要是对一些主要的数据结构理解的不够.所以趁着暑假假期.近期一段时间总会抽出时间复习一

C++标准模板库Stand Template Library(STL)简介与STL string类

参考<21天学通C++>第15和16章节,在对宏和模板学习之后,开启对C++实现的标准模板类STL进行简介,同时介绍简单的string类.虽然前面对于vector.deque.list等进行过学习和总结,但并没有一个宏观上的把握,现在通过上一篇和这一篇博文,将对C++模板以及基于C++模板的STL关联起来,形成一个总体的把握,对于掌握C++中模板(template)这一强有力的工具会十分有帮助.本文的主要内容有: (1) STL容器: (2) STL迭代器: (3) STL算法: (4) ST

标准模板库

-------------------siwuxie095 在长期的编码中,聪明的程序员们发现:有一些代码经常碰到, 而且需求特别稳定,于是,各大公司在出售自己的 IDE 环境时, 就会把这些模板代码打包,一起销售 慢慢地,这些大公司之间就达成了某种共识,觉得应该把这些 涉及模板的通用代码进一步的统一和规范,于是,大家慢慢形 成了一套 C++ 的标准模板,就是现在所看到的标准模板库 标准模板库 标准模板库,即 Standard Template Lib,简称为 STL 标准模板库所涉及的内容非常

CPP strings 与标准模板库

Leetcode 838 push dominos 解体思路 code { font-family: courier; color: green } STL标准模板库 提供了一组表示容器.迭代器.函数对象和算法的模板. Alex Stepanov & Meng Lee 一起开发了STL, 1994年第一版发布.STL不是面向对象的编程,而是一种不同的编程模式---泛型编程(generic programming). 前者关注的是编程的数据方面,后者关注的是算法.共同特点是抽象与创建可重用代码,但