Table of Contents

C++ STL 教程

实例


C++ STL 教程

在前面的章节中,我们已经学习了 C++ 模板的概念。C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。

C++ 标准模板库的核心包括以下三个组件:

组件 描述
容器(Containers) 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 deque、list、vector、map 等。
算法(Algorithms) 算法作用于容器。它们提供了执行各种操作的方式,包括对容器内容执行初始化、排序、搜索和转换等操作。
迭代器(iterators) 迭代器用于遍历对象集合的元素。这些集合可能是容器,也可能是容器的子集。

这三个组件都带有丰富的预定义函数,帮助我们通过简单的方式处理复杂的任务。

下面的程序演示了向量容器(一个 C++ 标准的模板),它与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求:

实例

#include <iostream> #include <vector> using namespace std; int main() { // 创建一个向量存储 int vector<int> vec; int i; // 显示 vec 的原始大小 cout << "vector size = " << vec.size() << endl; // 推入 5 个值到向量中 for(i = 0; i < 5; i++){ vec.push_back(i); } // 显示 vec 扩展后的大小 cout << "extended vector size = " << vec.size() << endl; // 访问向量中的 5 个值 for(i = 0; i < 5; i++){ cout << "value of vec [" << i << "] = " << vec[i] << endl; } // 使用迭代器 iterator 访问值 vector<int>::iterator v = vec.begin(); while( v != vec.end()) { cout << "value of v = " << *v << endl; v++; } return 0; }

当上面的代码被编译和执行时,它会产生下列结果:

vector size = 0
extended vector size = 5
value of vec [0] = 0
value of vec [1] = 1
value of vec [2] = 2
value of vec [3] = 3
value of vec [4] = 4
value of v = 0
value of v = 1
value of v = 2
value of v = 3
value of v = 4

关于上面实例中所使用的各种函数,有几点要注意:

  • push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
  • size( ) 函数显示向量的大小。
  • begin( ) 函数返回一个指向向量开头的迭代器。
  • end( ) 函数返回一个指向向量末尾的迭代器。

C++ STL 教程相关推荐

  1. C++高级进阶教程之STL 教程

    STL 教程 在前面的章节中,我们已经学习了 C++ 模板的概念.C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和 ...

  2. [C++STL教程]7.priority_queue优先队列入门学习!零基础都能听懂的教程

    不知不觉C++STL教程系列已经第7期了.之前我们介绍过:vector, queue, stack, set, map等等数据结构. 今天我们来学习一个新的stl容器:priority_queue优先 ...

  3. STL教程:C++ STL快速入门

    目录 1.STL引言 2.STL是什么(STL简介) 3.STL历史 4.STL组件 5.STL基本结构 6.STL 使用方法 7.STL目录 网址:STL教程:C++ STL快速入门(非常详细) 第 ...

  4. C++:STL教程从入门到精通

    1:STL概念 C++ STL(标准模板库)是一套功能强大的 C++ 模板类,它提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,(如:向量,链表,队列,栈.) 1.1 ...

  5. C++ STL?看这篇就够啦。草履虫都能学会的STL教程!

    C++中容器 容器是什么? string容器 构造函数 常见函数 vector容器 与array的区别 构造函数 常见函数 迭代器 迭代器是什么? deque容器 实现原理 常见函数 stack容器 ...

  6. STL教程(一): 标准模板库--STL概述

    STL是C++通用库,主要由迭代器.算法.容器.仿函数.内存分配器和配接器组成. STL主要的主要功能都被声明在13个头文件中,它们分别是:< algorithm >.< deque ...

  7. STL教程(十): 关联容器--unordered_map/unordered_multimap

    一.unordered_map/unordered_multimap简介 template<class Key,class T,class Hash = std::hash<Key> ...

  8. STL 简介,标准模板库

    作者:Scott Field 这篇文章是关于C++语言的一个新的扩展--标准模板库的(Standard Template Library),也叫STL.     当我第一次打算写一篇关于STL的文章的 ...

  9. STL中list用法详解

    本文转载自百度文库.作者如下.其中下面的count, count_if等函数的使用有些陈旧,如在编译时遇到问题,请百度. 标准模板库(STL)介绍 作者:Scott Field 本文以List容器为例 ...

最新文章

  1. matlab if语句多个执行举例,初学Matlab,有两个语句,if语句和switch语句,有两个例子哪位大神能帮我讲讲...
  2. 翻译: TypeScript 1.8 Beta 发布
  3. 《Android游戏开发详解》一2.16 区分类和对象
  4. 【PP生产订单】入门介绍(六)
  5. Linux vim命令模式、末行模式、编辑模式相互切换
  6. mysql某一列之前加一个球_MySQL作业:三色球,概率题,子查询【诗书画唱】
  7. Java内存缓存-通过Google Guava创建缓存
  8. data 的数据代理
  9. 入行十年,总结出了数据仓库、数据集市、数据库的精华,你一定不能错过
  10. 判断Linux系统是否被黑的方法
  11. Android多种样式的进度条
  12. Zoom创始人袁征转让约1800万股股票 价值超过60亿美元
  13. window10+cuda+cudnn下载
  14. pidgin qq_如何在Pidgin中将Google Apps帐户用于GTalk
  15. java删除word中批注_Java 添加、回复、删除Word批注
  16. 马槊, 在古代是将领身份的象征
  17. 易语言编译和c语言,易语言独立编译的EXE文件问题
  18. 贝尔商道赚钱思维36道第01道:天地无所谓仁与不仁
  19. 代码的思路与代码的实现
  20. Windows禁用和启用触屏功能

热门文章

  1. 启动docker容器报错 driver failed programming external connectivity on endpoint
  2. redis学习-当下NoSQL应用场景简介
  3. VMware10 安装centos6.7 设置NAT模式固定ip
  4. js设置百分比保留两位小数
  5. NOIP2013D1T3货车运输(最大生成树+倍增lca)
  6. 算法导论4--求最大和数组
  7. 10-2-DBUtils工具
  8. oracle querytimeout,聊聊pg jdbc的queryTimeout及next方法
  9. java jframe tab_java Swing实现选项卡功能(JTabbedPane)实例代码
  10. java关键字说明_JAVA常用关键字及其用法简要说明