C++:STL教程从入门到精通
1:STL概念
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,它提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,(如:向量,链表,队列,栈。)
1.1 容器:
用来管理某一类对象的集合,C++提供了各种不同类型的容器。比如:Dequeue,List, Vector等集合容易。
vector<T> : 一种向量
list<T> : 一个双向链表容器,完成了标准C++数据结构链表的所有功能
queue<T> : 一种队列容器,完成了标准C++数据结构中 队列的所有功能
stack<T>: 一种栈容器,完成了标准C++数据结构中栈的所有功能
deque <T>:双端队列容器,完成了标准 C++ 数据结构中栈的所有功能
priority_queue <T>:一种按值排序的队列容器
set <T>:一种集合容器
multiset <T>:一种允许出现重复元素的集合容器
map <key, val>:一种关联数组容器
multimap <key, val>:一种允许出现重复 key 值的关联数组容器
1.1.1 :容器 Stack例子
#include <iostream>
#include <string>
#include <cstring>
#include <thread>
#include<windows.h>
#include<chrono>
#include<ctime>
#include<mutex>
#include<stack> int main() {stack<int> stack; // 定义堆栈对象for (int i = 0; i < 10; i++){stack.push(i);}cout << "开始弹出堆栈的元素";while (!stack.empty()){cout << stack.top()<< " ";stack.pop();}}打印结国: 开始弹出堆栈的元素9 8 7 6 5 4 3 2 1 0
1.1.2 :Stack实际应用 :
给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格 比如: good good study day day up ---->pu yad yad yduts doog doog
1: 可以使用C++ 头文件 algorithm的 reverse函数2: 也可以切割字符串,通过 stack 来实现实现方式一: int main() {reverse(str.begin(), str.end());string reverse_str = str;cout << "反转的字符串为: " << reverse_str << endl;
}实现方式二:int main() {stack<char> str_stack;for (int i = 0; i < str.length(); i++){str_stack.push(str[i]);}while (str_stack.size() >0){cout << str_stack.top() << "";str_stack.pop();}}打印结果:反转的字符串为:pu yad yad yduts doog doog
1.1.3 :C++ STL stack容器源码解析
1.2 :案列代码
1.2 算法:
算法作用于容器,他们提供了执行各种操作的方式,包括对容器内容执行初始化,排序,搜索和转换等操作,这些算法在命名空间 std 的范围内定义,通过包含头文件 <algorithm> 来获得使用权
常见的算法包括
- for_each();
- find();
- find_if();
- count();
- count_if();
- replace();
- replace_if();
- copy();
- unique_copy();
- sort();
- equal_range();
- merge();
1.3 迭代器:
迭代器作用于遍历对象集合的元素,这些集合可能时容器,也可能是容器的子集。
2:STL
C++:STL教程从入门到精通相关推荐
- Android Studio2.0 教程从入门到精通Windows版
系列教程 Android Studio2.0 教程从入门到精通Windows版 - 安装篇 Android Studio2.0 教程从入门到精通Windows版 - 入门篇 Android Studi ...
- jquery validate 中文教程【入门到精通】
jquery validate 中文教程[入门到精通] jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求 ...
- Android Studio教程从入门到精通
最新2.0系列文章参考: Android Studio2.0 教程从入门到精通Windows版 - 安装篇 Android Studio2.0 教程从入门到精通Windows版 - 入门篇 Andro ...
- 视频教程-最新完整react教程从入门到精通包教包会-ReactJS
最新完整react教程从入门到精通包教包会 10年以上开发经验,曾经是八维教育实训主任,千峰教育高级HTML5前端讲师,尚品中国创始人.现任程序思维创始人.曾和大厂.国企等大型企业合作开发项目.百余客 ...
- Android Studio2.0 教程从入门到精通MAC版 - 安装篇
来自:http://www.open-open.com/lib/view/open1466430392743.html 前言 这个教程你将学会如何使用Android Studio2.0开发Androi ...
- 汇编语言程序教程:从入门到精通!
汇编语言程序教程:从入门到精通! 作者:zzmdl0297140 来源:不祥 发布时间:2006-2-13 下午 10:54:59 发布人:941xz <script language=& ...
- fcpx教程从入门到精通「1」初步认识Final Cut Pro
这次给大家带来fcpx教程从入门到精通的教程,是非常适合小白学习的fcpx教程.本期内容讲解初步认识Final Cut Pro. 新建资源库 我们第一次打开,是这样的界面,所以我们需要新建一个资源库, ...
- JavaScript教程——从入门到精通-石川-专题视频课程
JavaScript教程--从入门到精通-55872人已学习 课程介绍 JavaScript教程--从入门到精通 课程收益 JavaScript教程--从入门到精通 讲师介绍 ...
- Linux教程从入门到精通
为什么80%的码农都做不了架构师?>>> Linux教程从入门到精通 Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linu ...
最新文章
- 微信链接里的图像如何得到更清晰
- Python_note7 文件和数据格式化+wordcloud库
- 皮一皮:选第一个选项的人是咋想的?
- 单片机检测stc没反应_STC 核心板 入门记 - 你好我叫郑某人
- 安装ubuntu时将boot目录单独挂载的意义
- 05--MySQL自学教程:DDL(Data Definition Language:数据库定义语言)操作数据库(一)
- exi 虚拟服务器,图文教程:如何在ESXi主机上部署VMware Tools 10
- js编写简易返回顶部按钮
- Android之判断时间戳是不是今天
- 当html里语义化,HTML5语义化
- Apriori算法+python实现
- C语言-扫雷游戏程序设计
- @Qualifier注解 的理解和使用
- win10下安装deepin双系统教程
- 小程序 饿了么美团外卖券返利小程序源码+教程
- 【网络技术题库梳理6】无线局域网设备安装与调试
- 书写历史的甲骨文--ORACLE公司传奇
- qiankun框架: vue2 主应用访问子应用报错 [import-html-entry]:error occurs 或 died in status LOADING_SOURCE_CODE
- 【Git】使用手册02--在本地玩转代码
- .NET Petshop详解(五):petshop输出缓存设置 (转)