1. STL介绍

STL是Standard Template Library的缩写,即标准模板库。之前在写 Templates 模板的时候,提到过STL对于模板的应用。STL是由多个模板类构成,能够为开发者提供通用的数据结构和算法。

STL主要包含以下内容:

  • 容器 Container:用来管理某一类对象的集合。

    • vector(可扩展的单向数组)
    • deque(可扩展的双向数组)
    • list (双向列表)
    • sets(无序集合)
    • maps:<Key, Value>
  • 算法 Algorithm:对容器的内容执行初始化、排序、分类和搜索等操作。
  • 迭代器 Iterators:用于遍历对象集合的元素。

STL能给我们带来哪些帮助呢?

  • 减少开发时间。轮子已经被验证过了,学会使用轮子能大大节省开发时间。
  • 提高代码可读性。使用同一个轮子能让同行更快读懂你的代码。
  • 提高程序健壮性。STL的数据结构是自动增长的。
  • 提高可移植性,可维护性等。

2. vector 示例

一个简单的vector示例:创建int类型的向量,并实现初始化、赋值和打印操作。

#include <iostream>
#include <vector>
using namespace std;int main()
{cout << "vector example:" << endl;// 创建一个int类型向量 xvector<int> x; // 创建一个包含100个元素的int类型向量 yvector<int> y(100);// 输出vector x的初始大小cout << "vector x size = " << x.size() <<endl;// 输出vector y的初始大小cout << "vector y size = " << y.size() <<endl;// 为向量x的前10个元素赋值for (int a = 0; a < 10; a++)x.push_back(a); // 在vector最后插入元素// 输出vector y扩展后的大小cout << "vector x size = " << x.size() <<endl;vector<int>::iterator p; // 使用迭代器访问 x 的值 cout << "all elements in x: ";for (p = x.begin(); p < x.end(); p++)cout << *p << " "; //依次输出每一个元素的值cout << endl;// 删除vector中第4个元素vector<int>::iterator pp = (x.begin()+3);cout << "before erase ";cout << "vector x[4] = " << *pp << endl; x.erase(pp);cout << "after  erase ";cout << "vector x[4] = " << *pp << endl; return 0;
}

输出结果:

从上边的例子可以体现出vector的健壮性,vector是一个动态的数组模板,可以在程序运行过程中高效地添加或者删除元素,为程序设计提供了很大的灵活性。

最后,关于STL还有很多细节,待续吧。

C++语法篇之STL库相关推荐

  1. C++11 中STL库中新增内容

    C++ 11一个比较显著的变化是以前boost库中的一些函数被正式标准化合入到STL中了,本文就简单的介绍一下. 引用包装器(Reference Wrapper) 当模板函数参数为泛型类型的时候,无法 ...

  2. c++中algorithm头文件、STL库简介及使用说明

    c++中algorithm头文件.STL库简介及使用说明 c++中algorithm头文件是STL的算法部分,里边定义了各种算法,比如sort之类的.加上algorithm就可以使用stl库里的各种算 ...

  3. [c++]巧用stl库-啤酒与尿布

    [c++]<-巧用stl库-> 啤酒与尿布 前言 大家好,楼主计算机专业大学狗一枚.<啤酒与尿布>是专业课的一道课后习题,觉得我个人思路比较新颖,在此分享.能力一般,水平有限, ...

  4. C/C++学习指南(语法篇) - 邵发

    C/C++学习指南(语法篇),清华大学出出版,作者:邵发 ,ISBN: 9787302419891,一部C/C++基础语法教材,配套100集视频讲解,在线题库.官网:阿发你好 本书简介 一部C/C++ ...

  5. ①(语法篇)、《史上最全iOS八股文面试题》2022年,金三银四我为你准备了,iOS《1000条》笔试题以及面试题(包含答案)。带面试你过关斩将,(赶紧过来背iOS八股文)

    iOS面试题 一共分为笔试题和面试题两部分 笔试题 一共分为10个 总共613题 面试题 一共400题 笔试题 一个10个系列 分别为 ①(语法篇) 共147题 已更新 ②(常识篇) 共72题 已更新 ...

  6. 例题5-3安迪的第一个字典 UVa10815--C++STL库映射set的应用

    前言 不定期更新C++的STL库以及算法练习的笔记 分享给大家 也是督促自己不断努力学习算法与程序设计 学习算法之前,要想高效简洁的写好代码,还需要熟练掌握STL库的一些方法和数据结构 参考书籍: & ...

  7. STL库:stack和queue

    STL库:stack和queue 文章目录 STL库:stack和queue 1.STL库中stack的官方介绍 2.stack的常用接口 3.stack的模拟实现 4.STL库中queue的官方介绍 ...

  8. C++17标准STL库并行策略在GCC编译器中的替代实现方法

    C++17标准STL库并行策略在GCC编译器中的替代实现方法 严正声明:本文系作者davidhopper原创,未经许可,不得转载.  2019年8月5日更新: GCC 9.1.0可支持C++ 17标 ...

  9. Flex 布局教程:语法篇

    阮一峰的网络日志 » 首页 » 档案 上一篇:ES6 的功能侦测库 下一篇:Flex 布局教程:实 分类: 开发者手册 Flex 布局教程:语法篇 作者: 阮一峰 日期: 2015年7月10日 网页布 ...

  10. C++常用基础知识—STL库(1)

    本文介绍C++常用的STL库知识,常用的函数及其用法,为备战C++编程比赛的朋友及对STL库函数应用时的快速查找提供方便. 后续还会继续更新,请大家多多支持!!! STL简介 顺序性容器 2.1 C+ ...

最新文章

  1. TensorRT优化方案图例
  2. php数据 文本_php直接调用文本文件内容
  3. 用Handler的post()方法来传递线程中的代码段到主线程中执行
  4. 第四期 SA 分析师认证名单正式公布!
  5. gcc编译器_2020好用的C++编译器有哪些?这几款值得下载
  6. XStream将XML转换为JAVA对象快速指南
  7. Java 对象数组的定义与用法详解
  8. sklearn文本聚类分析
  9. Spring之事务管理与事务的传播特性
  10. android看视频掉帧,玩游戏看视频经常卡顿不顺畅?你只需这几步
  11. 【精华】超详细的Win10安装步骤,菜鸟福音
  12. bluehost中国和bluehost美国的区别?应该选择哪个?
  13. 解决VS编译生成的exe文件不能在其他电脑上运行的问题
  14. 《高效的秘密》第五,六章读后感
  15. 淘晶驰芯片AIHMI简介
  16. prometheus告警配置
  17. 上汽董事长称不接受与华为合作自动驾驶;曝OPPO给离职员工补发年终奖,此前遭克扣;Google Play 将启用AAB格式应用...
  18. oracle缺少有右括号,oracle ORA-00907错误:缺少右括号
  19. 服务器密码修改后数据库无法登录,关于 mysql5 改密码后不能登录问题的解答-数据库专栏,MySQL...
  20. 如何让你的android模拟器连接上你电脑的网络

热门文章

  1. NGINX转发udp、tcp
  2. 软件工程专业要学什么课程?
  3. 简易nginx load balance示例
  4. Android fragment原因,Android总结之Fragment
  5. swfobject参数详解
  6. 详解数据治理体系(值得收藏)
  7. 软件工程考试归纳知识点
  8. Python数据处理(入门教程)
  9. Python语言程序设计 第七周 文件和数据格式化
  10. Spring常用设计模式--抽象工厂模式