STL

使用vector时,千万别混淆了capacity()和size()

在vector里,不管是循环、还是查看容器内元素大小,我们都会用到size()这个常用函数来获取当前容器内元素个数(几乎所有容器都有这个size()函数来跟踪容器内元素大小)。有时我们也常常听到capacity(),这个函数意思是容量,对于不熟悉size()、capacity()的小伙伴经常将它两弄混,导致一些概念混淆问题。接下里我将向读者详细介绍它两直接的关系,毕竟能用一个变量维护的东西,干嘛会

为什么说C++ STL是C/C++程序员的基本功?

对于C++程序员来说,熟练使用STL库是最基本的技能,尤其是在企业招聘的时候,招聘要求都会明确声明熟练运用STL库,因为这直接关系到开发效率、代码质量与程序性能。企业将STL掌握程度视为评估候选人专业素养的核心指标:初级水平要求能准确选用容器和算法完成业务逻辑;中级水平则必须理解底层机制,如vector扩容代价、迭代器失效原因,并能进行性能优化;高级水平更进一步,需能结合智能指针、移动

浅谈C++ STL的发展史

1. 思想起源与早期探索(1970s - 1980s) STL 的核心理念源于其创始人 Alexander Stepanov 的长期思考:能否将算法从具体应用中抽象出来,且不损失运行效率?在莫斯科大学攻读数学后,Stepanov 与 David Musser 等人合作,先后使用 Tecton、Schema 和 Ada 语言进行泛型库

C++泛型编程是什么?

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

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

我们已经认识STL库里的array容器了,在填充完元素后,最常见的操作就是查看array里的元素了。本节将会详细介绍多种访问array内元素的方式,让读者熟悉array容器内元素的访问方式!和普通数组一样,array也重载了'[]'运算符,我们可以通过'[]'访问array内的元素:#include<bits/stdc++.h>/*如何访问

深入学习C++ STL vector容器的迭代器

在《什么是迭代器?》里我们就粗略地介绍了迭代器,现在,我们将会进行vector迭代器的深入学习,包括认识和实际操作迭代器。vector里的迭代器很简单!先说一下begin()、end(),这两个被称为正向迭代器;rbegin()、rend()被称为反向迭代器,这里r意思是reverse,反转的意思;还有cbegin()、cend()、crbegin()、crend(),这里c指的是const,意为

C++ STL vector容器如何在指定位置前插入元素?

对于vector容器,我们现在已经很熟悉尾插法push_back()和emplace_back()了,并且我们还知道在面对复杂对象的时候,使用emplace_back()的效率更高。但是当我们需要在vector内其他位置插入元素,该怎么办呢?别着急,insert()或emplace()能够帮助你解决这个问题。vector里,insert()和emplace()都能够在指定位置前插入元素,相同点是他

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

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

还有人不知道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 vector<bool> - STL容器的败笔!

vector,被称为“最好的数组”,凭借其动态扩展能力和丰富的成员函数深受c++程序员和算竟选手喜爱,大家对此深信不疑。有一天,你听到个消息说:vector&lt;bool&gt;不是STL容器!此时,大家心里恍如晴天霹雳:要知道vector是世界上最好的序列式容器,谁敢在此质疑vector的完美设计?起初,笔者也同大家一样感到莫名其妙,迅速打开dev,创建vector&lt;bool&gt;看看