STL

C++ STL容器有哪些常用成员函数和成员变量?

使用STL需要我们了解容器及其对应的成员函数和成员变量,不求全部背诵,但是要有个印象,方便文档查询和算法使用,下表罗列了算法竞赛中STL常用函数和变量:类别名称功能说明适用容器容量相关size()返回当前元素个数全部容器empty()判断容器是否为空全部容器max_size()返回容器可容纳的最大元素数全部容器capacity()返回当前分配的内存容量(仅vector/string)vector,

C++ STL区间交换算法std::swap_ranges()函数入门

前面一节我们学习了工具函数move() 函数,读者是否还记得它的功能是什么吗?没错,该函数能够高效地移动对象资源,同时源位置的元素会被置于有效但未指定的状态。本节我们将学习一个新的算法——区间交换算法,顾名思义,区间交换算法就是高效交换两个同类型且等长的区间。swap_ranges() 函数就是一个重要的区间交换算法,"swap" 意为"交换","

C++STL之stack栈容器

C++STL之stack栈容器1.再谈栈回顾一下之前所学的栈,栈是一种先进后出的数据结构,而实现方式需要创建多个结构体,通过链式的方式进行实现,这是标准的栈的思路,而在STL中栈可以以更为简单的方式实现。2.头文件头文件#incl……

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

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

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

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

不要试图修改C++ STL有序关联式容器内元素的键(key)!

C++ STL库有序关联式容器我们已经学习完了。想必有不少读者存疑:能不能修改元素的键(key)呢?答案是肯定的,不能!为什么,就像是下标对于数组一样,是数组属性的一部分,键(key)对于有序关联式容器来说也是如此,键(key)关乎容器内元素的访问和排序,是基本的属性规则,不允许修改。其次,pair模板对象的底层是:pair(const_T1&__a,c

C++泛型编程是什么?

在当今的编程世界中,泛型编程早已不再是某个语言的独有特性,而是现代编程语言的"标准配置"。就像汽车都需要方向盘和刹车一样,主流编程语言都提供了各自的泛型实现方案。比如:Java通过泛型实现了类型安全的容器,让你可以写出List<String>这样的代码,编译器会在编译阶段进行类型检查,防止错误的数据类型被放入容器;C#的泛型更是强大,它在运行时仍然保留类型信息,提供

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

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

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

前面一节我们学习了比较算法lexicographical_compare()函数,读者是否还记得它的功能是什么吗?没错,它能让我们的序列实现字典序比较行为。本节我们将学习排列组合算法——next_permutation()函数。“next”表示“下一个”,“permutation”表示“置换”,这里next_permutation()函数的功能将序列按照"字典顺序"重新排列成下

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

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