C++ STL
千瞱
世界上没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。
展开
-
C++中STL中map的使用方法
在编程的过程中常常会需要存储一组数据(比如json中的键值一一对应的数据集),如果要使用原生的方法,可以定义一个结构体或者类然后添加相应的方法来实现。但在C++的Standard Template Libray中定义了Map这样一种数据结构,可以方便我们使用。 下面对STL中的map类进行介绍。 Map是STL中一对一的关联容器,其中第一个称为键,Map中的键是独一无二的(类似...原创 2018-02-26 15:07:25 · 957 阅读 · 0 评论 -
cin.peek()的用法
cin.peek()函数说明说明: cin.peek()的返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测指针停留在当前位置并不后移。举个栗子:#include <iostream>#include <string>using namespace std;int main(){ cout<<"Enter a Word o...原创 2018-02-26 16:05:28 · 8380 阅读 · 1 评论 -
C++ STL基本思想
写在前面:STL的相关特点总结数据结构和算法的分离 STL不是面向对象的 STL是基于模板的,因此其组件具有广泛的通用性 模板并不是可执行代码,如果一个模板从来没有被使用过,那么将会被编译器忽略,不会生成可执行代码,即使模板本身存在错误,包含这个模板的程序仍然可以编译和运行。本节关键字 模板库的划分、STL之父、类模板实例化、类模板的成员函数、类模板的静态成员、函数模板、类模板...原创 2018-03-16 20:59:54 · 1302 阅读 · 0 评论 -
STL中vector、list的区别
转载:http://blog.csdn.net/luliyuan/article/details/22787177二者的区别就是数组(也叫向量)和链表的区别,而且list是一个双向链表容器Vector(向量) 实质上是数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大...转载 2018-03-16 21:11:06 · 1926 阅读 · 0 评论 -
C++ Templates之类模板
在《C++ Templates》第三章介绍类模板的概念,并借助vector实现Stack类模板。实现代码如下:#include <iostream>#include <vector>#include <stdexcept>using namespace std;template <typename T>class Stack {p...原创 2018-07-17 09:30:24 · 402 阅读 · 0 评论 -
STL 空间配置器篇
如果你不曾仔细研读STL源码,你是不会发现在STL还会有空间配置器的存在的,因为它是隐藏在一切组件(特别是容器)的背后,默默工作。如果你需要自己实现一个STL,最先设计的就应该是空间配置器,因为它是一切STL的基础。零、为何STL要单独设计空间配置器?一开始我有过这样的疑惑:为什么STL不直接使用malloc和free操纵内存即可,为什么还要设计空间配置器呢?这不是多此一举吗?后来在学...原创 2018-10-01 11:50:22 · 2551 阅读 · 1 评论 -
STL 序列式容器篇(未完成)
STL中的容器可以分为序列式容器和关联式容器。序列式容器指其中的元素都可序,但未必有序。在STL中提供了vector, list, deque, stack, queue, priority_queue等等序列式容器。其中stack和queue是由deque改头换面而成。本篇介绍STL中序列式容器的设计和使用方式。 一、vector欲使用vector需要包含头文件: #inc...原创 2018-10-01 16:34:24 · 248 阅读 · 0 评论 -
STL algorithm学习笔记
本篇主要总结在C++标准库algorithm头文件下的函数的使用方法1 lower_bound和upper_bound(应用于有序区间)template <class ForwardIterator, class T>inline ForwardIterator lower_bound(ForwardIterator first, ForwardIterator las...原创 2019-04-14 17:50:42 · 398 阅读 · 0 评论 -
STL容器篇:set
1 认识set和multisetset名为集合,顾名思义只有键值,而不像map那样既有键值(key)又有实值(value)。而且STL中的set有个特性是所有的元素都会根据元素的键值自动被排序。由于RB-tree是一种平衡二叉树,自动排序的效果很不错,因此标准的STL set以RB-tree作为底层机制。我们可以通过set的迭代器修改set元素的值么?不行!因为set元素值就是其...原创 2019-04-14 18:04:28 · 347 阅读 · 0 评论