STL

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

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

map容器中对比insert()和’[]',谁的插入效率更高?

在前面《如何为STL库中的map添加元素?》我们总结了4种方式为map容器插入元素,最常用的就是insert()和'[]'了。相必读者一定很好奇到底是谁的插入效率更高,用哪一个更好。这里先不直接公布答案,先看看直观的代码测试:#include<bits/stdc++.h>//万能头#include<string>#include<map>//

初识STL中的vector容器

就普通数组而言,array不过是封装一个类的把戏罢了,只能称之为pro版数组;而对于vector来说,则是一台完美的重装坦克,升级为promax版数组,兼顾动态扩展和多种功能,成为算法竞赛上的常用数组容器。vector与前面两者不同,能够做到动态扩展,相比传统数组而言更加灵活。如果读者对array是否为动态数组而感到疑虑,则可自行跳转《千万别认为array容器是动态数组!》去一探究竟。vector

C++STL之Set容器

C++STL之Set容器1.简介Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树(可能读者对此不太了解,等但学到树论与图论的章节的时候就会……

deque容器迭代器使用详解

前面《初识STL库中deque容器》我们已经学会创建deque容器并且了解到很多deque的成员函数,本节将会详细讲解deque容器的迭代器。deque容器和vector容器一样,都有begin()、end();rbegin()、rend();cbegin()、crbegin()···下图为deque迭代器指向:下面将通过代码向您展示如何通过迭代器访问deque内的元素:#include<b

C++STL之multiset与multimap容器

C++STL之multiset与multimap容器1.MultisetMultiset是set集合容器的一种,其拥有set的全部内容,在此基础之上,multiset还具备了可以重复保存元素的功能,因此会有略微和set的差别。Multise容器在执行i……

C++STL教程入门

C++STL教程入门在上一篇文章我们已经基本的了解了什么是C++的STL(标准模板库),在本章中绝大多数内容都是在介绍常用的STL模板的使用以及其一些参数的介绍,但是请注意,STL由于其设计之初就容纳了大量的程序员思维结……

初识关联式容器

前面我们已经把序列式容器全部学习了,包括array、vector、deque、list和 forward_list,本节我们将进行关联式容器的学习。那什么是关联式容器呢?在回答这个问题之前,读者是否还记得序列式容器查找和修改元素都是按什么条件进行的,答案是“位置”,不管是vector、deque还是 list,他们都是以线性容器的方式,依靠“位置”进行查找和删改;关联式容器并不依靠“位置”进行元素

什么是迭代器?

迭代器是STL中连接容器与算法的桥梁,它模拟指针的行为,为不同容器提供统一的元素访问接口。无论底层是数组、链表还是树结构,迭代器都能以相同的方式遍历元素,使得算法可以独立于具体容器实现。这种设计实现了数据存储与操作的彻底分离,是STL泛型编程理念的核心体现。迭代器根据功能强弱分为五种主要类别,形成层次化的能力体系:输入迭代器是最基础的类型,支持单向读取操作,适用于一次性遍历场景(如从数据流读取)。

详解STL库中set容器迭代器的使用方法

前面我们初识了set容器,本节将会详细介绍set容器的迭代器,set容器迭代器和map容器、multimap容器一样都是双向迭代器,只能进行++或--操作,不能进行随机访问。同此,set容器有正向迭代器begin()、end(),有反向迭代器rbegin()、rend(),还有常量迭代器cbegin()、cend()、crbegin()、crend(),(c表示const,可读不可改)。由于set