![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL标准模板库学习
文章平均质量分 82
王世晖
呵呵哒
展开
-
STL常用容器简介 vector deque list map set
1、顺序性容器(1)vector vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问。由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢。vector有多个构造函数,默认的构造函数是构造一个初始长度为0的内存空间,且分配的内存空间是以2的倍数动态增长的,即内存空间增长是按照20,21,22,23.....增长的,在push_back的过程中,若发现分配的内原创 2013-04-28 18:12:32 · 1462 阅读 · 0 评论 -
C++ 标准模板库STL 双端队列 deque 使用方法与应用介绍(一)
Deque总览 deque和vector一样都是标准模板库中的内容,deque是双端队列,在接口上和vector非常相似,在许多操作的地方可以直接替换。 Deque成员函数函数描述c.assign(beg,end)c.assign(n,elem)将[beg; end)区间中的数据赋值给c。将n个el原创 2013-05-14 07:55:46 · 8666 阅读 · 0 评论 -
C++ 标准模板库STL set 使用方法与应用介绍(一)
这次先看例子程序:#include #include #include #include using namespace std;int main(){ /* type of the collection: * - no duplicates * - elements are integral values * - descendin原创 2013-05-14 08:41:39 · 9822 阅读 · 0 评论 -
C++ 标准模板库STL set 使用方法与应用介绍(三)
STL-set简介set是一种随机存储的关联式容器,其关键词(key)和元素(value)是同一个值。set之中所有元素互不相同。set是通过二叉查找树来实现的。创建创建一个空的set 1: setint> s0 ;创建一个带大于比较器的set, 默认是小于比较器less 1: setint, greaterint>> s1 ;用数组初始化一个set转载 2013-05-14 09:38:50 · 3841 阅读 · 0 评论 -
C++ 标准模板库STL set 使用方法与应用介绍(二)
1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让用户原创 2013-05-14 08:46:00 · 2483 阅读 · 0 评论 -
C++ STL MAP 使用方法与应用介绍(四)
#include #include #include using namespace std;int main(){ /* create map / associative array * - keys are strings the period of the school * - values are strings the name of the s原创 2013-05-14 13:07:49 · 1284 阅读 · 0 评论 -
C++ 标准模板库STL multimap 使用方法与应用介绍(一)
示例程序如下 实现字典功能:#include #include #include #include using namespace std;int main(){ // define multimap type as string/string dictionary typedef multimap StrStrMMap; // create emp原创 2013-05-14 13:30:47 · 6512 阅读 · 0 评论 -
STL vector 使用方法简介 (三)
示例程序:#include #include #include #include #include using namespace std;int main(){ // create empty vector for strings vector sentence; // reserve memory for five elements to avoi原创 2013-05-14 14:50:33 · 1352 阅读 · 0 评论 -
C++ 标准模板库学习之 string 类 详解 (一) 将一个句子中每个单词的单词字母顺序翻转 关于npos find_first_not_of find_first_of getline
先看例子程序:#include #include using namespace std;void test_getline(void){ string s1; cout as the delimiter): "<<endl; getline(cin,s1, ' '); cout << "You entered: " << s1 << endl; co原创 2013-05-15 10:07:50 · 2182 阅读 · 1 评论 -
C++ 标准模板库STL 优先级队列 priority_queue 使用方法与应用介绍(一)
priority_queuePriority queues are a type of container adaptors, specifically designed such that its first element is always the greatest of the elements it contains, according to some strict weak or原创 2013-05-15 16:20:09 · 3142 阅读 · 0 评论 -
c++ 标准模板库 STL 算法之 for_each 函数的使用用法详解
std::for_eachtemplate Function for_each (InputIterator first, InputIterator last, Function fn);Apply function to rangeApplies function fn to each of the elements in the range[first,las原创 2013-05-15 17:39:31 · 6872 阅读 · 0 评论 -
C++ 标准模板库STL 双向链表 list 使用方法与应用介绍(一)
STL中的list就是一双向链表,可高效地进行插入删除元素。List 是C++标准程式库中的一个类,可以简单视之为双向连结串行,以线性列的方式管理物件集合。list 的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list 是C++标准程式库提供的众多容器(container)之一,除此之外还有vector、set、map、…等等。list 以模板方式实现(即泛型),可以原创 2013-05-13 21:55:37 · 13359 阅读 · 0 评论 -
STL学习之插入排序的STL实现
直接插入排序的C++实现及随机数组的产生方法这是之前的插入排序的例子程序,改用STL实现后暂时并没有体现vector的优势,以下是插入排序的STL实现#include#include#include#include#include#includeusing namespace std;// 生成元素为随机数的数组template void Random(vecto原创 2013-05-12 17:16:34 · 2936 阅读 · 0 评论 -
STL vector 使用方法简介(一)
vector是一种动态数组,是基本数组的类模板。其内部定义了很多基本操作。#include 注意:头文件没有“.h”构造:这个构造函数还有一个可选的参数,这是一个类型为T的实例,描述了各个向量中各成员的初始值;如:vector v2(init_size,0); 如果预先定义了:int init_size;他的成员值都被初始化为0;· 复制构造函数,构造一个新的向量,作原创 2013-04-28 20:04:03 · 1460 阅读 · 0 评论 -
STL标准模板库学习--STL 很好很强大
从标准输入设备(一般是键盘)读入一些整型数据,然后对它们进行 排序,最终将结果输出到标准输出设备(一般是显示器屏幕)。这是一种典型的处理方式,程序本身具备了一个系统所应该具有的几乎所有的基本特征:输入 + 处理 + 输出。你将会看到两个不同版本的程序。第一个是没有使用STL的普通C++程序,你将会看到完成这样看似简单的事情,需要花多大的力气,而且还未必没有一 点问题(真是吃力不讨好)。第二个程序的转载 2013-04-27 18:03:31 · 1522 阅读 · 0 评论 -
C++中bitset类的使用方法与应用
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。并使用std::bitset的using声明:#i nclude using std::bitset; bitset的定义和初始化下表转载 2013-04-29 16:09:22 · 2160 阅读 · 0 评论 -
C++ STL MAP 使用方法与应用介绍(三)
4 、 数据的查找(包括判定这个关键字是否在map中出现)在这里我们将体会,map在数据插入时保证有序的好处。要判定一个数据(关键字)是否在map中出现的方法比较多,这里标题虽然是数据的查找,在这里将穿插着大量的map基本用法。这里给出三种数据查找方法第一种:用count函数来判定关键字是否出现,其缺点是无法定位数据出现位置,由于map的特性,一对一的映射关系,就决定了coun原创 2013-04-29 19:18:00 · 1346 阅读 · 0 评论 -
C++ STL MAP 使用方法与应用介绍(一)
1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。2、map的功能 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最原创 2013-04-29 16:29:18 · 1910 阅读 · 0 评论 -
C++ STL MAP 使用方法与应用介绍(二)
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有原创 2013-04-29 18:41:26 · 3348 阅读 · 0 评论 -
STL vector 使用方法简介 (二)
C++中的vector使用范例一、概述vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。例如:// c语言风格int myHouse[100] ;// 采用vectorvector vec转载 2013-04-29 15:49:17 · 1267 阅读 · 1 评论 -
C++ 标准模板库STL 队列 queue 使用方法与应用介绍(一)
queuequeue模板类的定义在头文件中。与stack模板类很相似,queue模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque类型。定义queue对象的示例代码如下:queue q1;queue q2;queue的基本操作有:入队,如例:q.push(x); 将x接到队列的末端。出原创 2013-05-15 15:31:50 · 93730 阅读 · 0 评论 -
C++标准模板库 迭代器 iterator 详解(一)
#include #include #include #include #include //copyusing namespace std;template inline void print (const T& coll, const char* optcstr=""){ typename T::const_iterator pos; std::cout原创 2013-05-17 16:54:20 · 2575 阅读 · 0 评论 -
C++标准模板库 迭代器 iterator 详解(二)
迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器不仅仅是指针,因此你不能认为他们一定具有地址值。例如,一个数组索引,也可以认为是一种迭代器。迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取原创 2013-05-18 21:56:08 · 3027 阅读 · 0 评论 -
STL迭代器及迭代器失效问题
迭代器失效: 典型的迭代器失效. 首先对于vector而言,添加和删除操作可能使容器的部分或者全部迭代器失效。那为什么迭代器会失效呢?vector元素在内存中是顺序存储,试想:如果当前容器中已经存在了10个元素,现在又要添加一个元素到容器中,但是内存中紧跟在这10个元素后面没有一个空闲空间,而vector的元素必须顺序存储一边索引访问,所以我们不能在内存中随便找个地方存储这个元素。原创 2013-08-06 15:08:41 · 3092 阅读 · 0 评论