STL

C++ STL迭代器辅助函数distance()入门

本节我们将继续进行第二个迭代器函数distance(first , last)的学习。同样,在使用迭代器函数时,我们需要第一时间包含头文件<iterator>。“distance”,意为“距离”,它返回的是两个同类型迭代器的相对距离,其区间为[first , last)。该函数适用前向迭代器、随机迭代器、双向迭代器以及输入迭代器。下面,让我们通过代码的方式来学习distance(fir

C++ STL无序关联式容器简介

前面我们已经深入学习了有序关联式容器,本节将继续学习关联式容器的另外一个分支——无序关联式容器。从名字上我们就可以看出,无序关联式容器的特点是“无序”,那怎么个“无序“法?根据前面对关联式容器的学习读者不难猜出,此处”无序“意为——元素不会自动进行排序,而且杂乱地存放在一段空间内。无序关联式容器,又被称为"哈希容器",底层通过哈希表实现。可简单理解为:通过哈希函数把key映射为

C++模板是什么?

C++模板是C++编程语言中的泛型编程工具,它允许你编写与具体数据类型无关的通用代码。简单来说,模板让你可以创建一个"代码蓝图",编译器会根据这个蓝图为不同的数据类型生成具体的代码。举个例子:在C++的世界里,有很多种数据类型,比如int(整型)、double(双精度浮点型)、float(单精度浮点型)、long long(长整型)等,为了实现各个类型的加法函数,我们一般都会这

判断C++ STL list容器是否为空,都给我用empty()!

在判断链表容器是否为空时,有人喜欢用size(),有人喜欢用empty(),这两种方法都可以成功判断list是否为空。如果读者使用的是empty(),那我没话说;但如果读者使用的是size(),读者可就要慎用了,因为在数据量很大的情况下,size()这会降低运行效率。这是为什么呢?要知道,STL大师不会任意制造“容器垃圾”,list有empty()这个成员函数就一定有它的道理。在C++11前,由于

C++ STL移除算法std::remove()函数入门

前面一节我们学习了区间交换算法swap_ranges()函数,读者是否还记得它的功能是什么吗?没错,该函数能够高效地交换两个同类型且等长的区间。本节我们将学习一个新的算法——移除算法,顾名思义,移除算法指的是快速移动同目标元素相等的元素到非相等元素区间,注意“移除”并非删除,想要实现删除效果需要配合erase()函数才行。remove()函数就是一个重要的移除函数,”remove“的意思是”移除“

C++ STL按条件查找算法std::find_if()函数入门

前面我们学过查找函数find(beg,end,val),本节我们将继续学习与其功能类似的函数——find_if()函数。find_if(beg , end ,pred),它的功能是在区间[beg , end)找到第一个满足pred条件的第一个元素,并返回指向该元素的迭代器;如果没有找到这个元素,则会返回end()。find_if(beg , end ,pred)中的"pred"

C++ STL无序关联式容如何处理自定义数据类型?

本章我们总共学习无序关联式容器:unordered_map容器、unordered_multimap容器、unordered_set容器、unordered_multiset容器,他们的底层都是基于哈希表的结构封装起来的一个类。在存储基础数据类型时,键(key)能够通过哈希函数转为哈希值(数据类型为size_t),当我们的键为自定义数据类型时,就需要我们重新定义哈希函数和重载operator&#3

C++ STL 插入迭代器适配器入门

插入迭代器适配器,又被称为插入迭代器或插入器(往后统一“插入迭代器”命名),故名思意,就是使用迭代器插入元素。一般我们都是通过迭代器读改元素,比如我要读改一个元素(it为非可读迭代器,假设*it数据类型为Int):*it=0;//改cout<<*it;//读而使用插入迭代器时:*it=0;//插入一个元素插入迭代

C++ STL set容器如何添加元素?

前面初识set容器时我们就提到过set容器比map容器要简单一些,主要通过insert()或emplace()添加元素。当然我们还可以通过emplace_hint()带条件地为set容器添加元素,所以总体来说,我们有三种方法为map容器添加元素。下面我将通过代码分别演示这三种方法:#include<bits/stdc++.h>//万能头,以效率为中心#include&lt

C++ STL unordered_map容器如何添加元素?

为了给unordered_map容器添加元素,我们有4种方法:1. 最简洁的方式就是通过'[]',中括号内为key,通过unordered_map[key]=value的形式为容器添加元素(这里如果已存在key,则进行覆盖);2. 然后就是大家熟悉的insert(),insert()在此处既可单个插入,又能多个插入;3. emplace()直接传入参数构建,但是仅能添加单个元素;4