STL

还有人不知道C++ STL vector容器的emplace_back()成员函数?

在前面的章节《初识STL中的vector容器》我们曾谈到vector插入元素的方法,想必大家只知道push_back()这个尾插函数吧,其实,在c++11后,vector还有一个尾插函数,那就是emplace_back(),en的意思是进入,place的意思是位置,emplace_back()就是放到最后面的意思。不是都有push_back()了吗,这么还会有emplace_back()呢?其实这

C++ STL unordered_map容器如何获取值(value)?

在基本掌握unordered_map容器及其迭代器的基础下,本节将带领读者一起学习如何获取unordered_map容器中元素的value。前面我们提到unordered_map容器和map容器一样都重载了'[]'符号,所以能够通过'[]'添加或查看value;还有find()输入key获取指向value的迭代器;其实我们还能通过at()、equal_range()

深度剖析C++ STL list容器的底层构造

在《初识STL库中的list容器》我们就曾明确谈到list容器是双向链表,每一个节点由两个指针和数据组成,两个指针分别指向前一个节点和后一个节点。长这样:链表属于相对简单的数据结构,我们也可以手搓一个简单链表:首先先创建一个结构体,包括数据域和指针域:structnode{intn;//数据域/*创建node指针初始值为空*/node*nex

C++ STL竟然有这么多个版本

自1998年ANSI/ISO C++标准正式确立,STL成为C++标准库的必备组件后,由于其开源特性与标准化接口,各大编译器厂商与开源社区纷纷基于标准规范,开发了各具特色的STL实现版本。这些实现均在遵循标准接口的前提下,针对性能、可移植性或特定平台进行了优化,其中具有代表性的包括HP STL、SGI STL、STLport、P.J. Plauger主导的PJ STL以及Rouge Wave ST

C++ STL复制算法std::copy_backward()函数入门

前面一节我们学习了条件复制算法copy_if()函数,读者是否还记得它的功能是什么吗?没错,该函数能够根据条件筛选元素并复制到目标区域。本节我们将学习一个反向复制算法——copy_backward()函数。”back“意为”后面“,”forward“意为”朝某个方向“,”copy_backward“表示”从后面往前复制“,从名称就能看出,这个函数与常规复制方向不同,它从序列的末尾开始向开头进行复制

C++ STL序列查找算法std::search_n()函数入门

上一节我们学习了序列查找算法search()函数,本节我们将继续学习序列查找算法——search_n()函数。我们知道,search()函数的功能是找寻主序列里第一次出现子序列的位置,那么这个search_n()函数到底有什么功能呢?“n”有“几个的意思”,search_n()函数的功能是在一个主序列中找寻第一次出现的n个连续且相等元素,类比search()函数的话就相当于是子序列变成了常量序列(

C++ STL queue适配器入门

queue适配器,又被叫做”队列“,与deque双端队列不同,它禁止随机插入元素并且只能从队尾进队首出,和就像坐地铁排队一样,不允许插队行为且遵守先入先出规则。queue适配器的成员函数也比较简单,除了元素增删位置不同其他与stack适配器没有什么区别。push()、emplace()把元素放进队尾,pop()把队首元素删除,size()查看元素总数,empty()检查队列是否为空,swap()交

深入学习C++ STL map容器的成员函数emplace_hint()

前面我们简单提到过emplace_hint()这个插入函数,在能够巧用迭代器的情况下就能实现map高效插入元素。emplace_hint(hint,key,val)有3各参数,第一个是位置迭代器hint,第二个是key键值,第三个是val值。它的返回值为:如果成功插入返回插入元素对应的迭代器,否则返回hint。如何巧用迭代器?大多数情况下emplace_hint()都是进行批量元素插入。比如我要插

深入学习C++ STL vector容器的迭代器

在《什么是迭代器?》里我们就粗略地介绍了迭代器,现在,我们将会进行vector迭代器的深入学习,包括认识和实际操作迭代器。vector里的迭代器很简单!先说一下begin()、end(),这两个被称为正向迭代器;rbegin()、rend()被称为反向迭代器,这里r意思是reverse,反转的意思;还有cbegin()、cend()、crbegin()、crend(),这里c指的是const,意为

C++STL之Priority_queue(优先队列)

C++STL之Priority_queue(优先队列)1.简介优先队列是一种极其特殊的队列,他与标准的队列使用线性结构进行计算不同,优先队列的底层是以散列的状态(非线性)表现的,他与标准的队列有如下的区别,标准的队列遵从严格的先进先出,优先队列并不遵从标……