STL

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

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

C++ STL queue适配器入门

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

C++ STL 流缓冲区迭代器入门

上一节我们学习了流迭代器,本节我们继续深入学习流对象的缓冲区迭代器——分别是istreambuf_iterator(从缓冲区读取字符)和ostreambuf_iterator(向缓冲区写入字符)。由于缓冲区读取数据要比流对象快,所以流缓冲区迭代器的操作效率要比流迭代器高。但在需要类型转换和数据验证的场景中,流迭代器提供了更好的安全性和便利性,读者需要明晰两者之间的区别。它们的使用方式十分“相似&q

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

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

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

上一节我们学习了排列组合算法——prev_permutation()函数,读者是否还记得它的功能是什么吗?没错,该函数以降序排序作为起点,生成上一个更小排列。本节我们将学习判断是否为排列组合算法——is_permutation()函数。"permutation"表示"置换",这里is_permutation()函数的功能是否互为彼此的排列组合,比如我们有两个

C++ STL查找算法std::find()函数入门

本节我们进入查找算法find()函数的学习。find(beg , end , val)函数的功能是在指定区间[beg , end)查找是否有与val值相等的元素,是则返回指向该元素的迭代器,否则返回end()。对于自定义数据来说,使用find()函数需要类内重载”==“运算符。下面我们通过find()函数来分别对基本数据类型和自定义数据类型进行指定元素查找:#include<iostream

C++ STL序列式容器是什么?

序列式容器是STL中的一类容器,它们以严格的线性顺序来存储元素。这个顺序由元素被插入的位置决定,每个元素都有固定的前后关系。序列式容器包括以下容器:容器类型数据结构长度特性访问效率插入删除效率内存布局array<T,N>固定数组编译时固定O(1) 随机访问不支持增删元素连续内存vector<T>动态数组运行时可变O(1) 随机访问尾部O(1),中间O(n)连续内存deque

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

前面几章,我们已经深入学习了很多查找算法,比如find()函数、find_if()函数、find_first_of()函数等,它们都是线性查找。本节我们开始其他查找方式的学习,比如lower_bound()函数、upper_bound()函数、equal_range()函数和binary_search()函数,它们都能够查找元素,只不过底层采用二分查找的方式,效率比线性查找高。本节我们进行lowe

C++STL之Pair类模板

C++STL之Pair类模板1.简介Pair表示“一对”的意思,pair将两个数据合成一组数据,在如下两种变成情况中,我们更加常见与使用pair,第一是使用STL中的map(在上一节讲过),对于map而言……

C++ STL deque容器如何增删元素?

前面我们已经充分了解deque的基本知识以及访问方式,本节将一口气为读者详细介绍如何对deque进行增删操作,加快我们的学习进度。这里可以类比vector的增删操作,《vector容器怎么在指定位置前插入元素?》、《vector容器怎么删除元素呢?》,读者通过对比学习,总结归纳出自己的宝贵经验,提高对STL容器的掌控力。我们先谈谈“增”这个操作:对比vector,我们都知道deque能够实现头增尾