STL

C++ STL unordered_map容器如何删除元素?

学到这里,我们已经掌握unordered_map容器的基本知识了,增、改、查,但还没有学过删。本节将继续带领读者一起学习如何为unordered_map容器删除元素。erase()是删除unordered_map容器内元素的主要函数,这里通过代码简单介绍如何通过erase()删除元素:#include<iomanip>#include<iostream>#i

C++ STL排列组合算法std::prev_permutation()函数入门

前面一节我们学习了排列组合算法——next_permutation()函数,读者是否还记得它的功能是什么吗?没错,它能让我们的序列按照字典序重新排列成下一个更大的组合。本节我们将学习它的对称函数——prev_permutation()函数。"prev"表示"前一个","permutation"表示"置换",这里prev

C++ STL 迭代器辅助函数prev(it , n)和next(it , n)入门

本节我们将继续进行迭代器函数的学习,由于next(it , n)和prev(it , n)功能上极为”相似“,所以笔者进行统一讲解。这里it参数指的是迭代器,n可为'+'、'-',需要根据容器进行选择(比如你总不会使用forward_list容器来进行后退操作),函数会返回将'it'进行'n'次移动操作后的迭代器。具体通过代码来展示:

还有人不知道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 priority_queue如何更改堆顶元素选取规则?

上一节我们提到,在优先队列容器里,堆顶元素不一定是像字面意思一样是权值最”大“的值,就像1大于0一样,通过仿函数,我们能够更改规则,让这个”大“朝着相反的方向出发,实现”0>1"。如果读者还是第一次听过仿函数这个词的话也没关系,它就相当于类重载了函数调用符'()',把类当函数使就好了。值得注意的是,在更改规则时需要我们指定优先队列的适配容器,否则无法使用仿函数。下面

C++ STL deque容器如何访问元素?

前面我们讨论过怎么访问vector内容器,其实deque容器访问元素方法与前者一样非常相似,都可以通过'[]'、迭代器、以及back()和front()来访问元素,不同点在于deque没有data()指针也不支持函数模板get()<T>访问,学过的3种序列式容器里只有array容器支持。原因在于函数模板get()<T>访问元素要求容器在编译时固定数组序列,d

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

前面我们学习的查找算法都是单个元素进行查找,本节我们学习一个按序列进行查找的算法——find_end()。find_end(first1,last1,first2,last2)的功能是在主序列[first1,last1)中寻找最后一次出现的子序列[first2,last2),如果找到就返回最后一次出现在主序列中的子序列的起始迭代器;如果找不到就主序列的last1迭代器。举个例子,主序列是{&#39

C++ STL二分查找std::binary_search()函数入门

前面一节我们学习了equal_range()函数,该函数的功能是在指定有序区间内查找第一个高于目标元素的元素。本节我们开始学习新的二分查找函数——binary_search()函数。“binary”意为“二分的”,“search”意为“查找”,binary_search()函数的功能是在指定有序范围内判断是否存在目标元素。binary_search()函数的语法格式为:/*查找[fir

C++ STL unordered_map容器入门

本节我们开始学习unordered_map容器。从功能上看,对比map容器,unordered_map容器既能够通过'[]'访问元素,又能够通过at()成员函数访问元素,同时还保证键值存在的唯一性,与map容器极为“相似”,唯一不同点就是unordered_map容器没有按键(key)进行自动排序;从结构上看,对比map容器,两者又是完全不一样的独立存在,map容器底层基于红黑树,