STL实现—C++STL简介
C++ STL简介一、STL介绍本次课程主要面对有一定 c++ 基础(了解基本语法,熟悉常用特性)的 ,想要学习 c++ 更深入特性 ,掌握 c++ 强大标准库的同学 。通过本次课程,你将学习到 c++ template ,异常处理 ,并回顾数据库的部分知识 ,初步掌握 STL 开发 ,避免重复制造轮子。
将学习到的知识点:
模板编程
泛型编程
STL 常用组件
lambda 表达式
异常处理
内存处理
部分数据结构
部分算法
提示:本课程所有代码至少需要开启 -std=c++11 选项来支持 C++11 相关特性,在介绍 C++14 特性时的相关代码需要开启 -std=c++14 的编译选项,例如:
12+ g++ main.cpp -std=c++11+ g++ main.cpp -std=c++14
如果你没有使用过 STL,那么你是不爱 c++ 的,STL 的原名是“Standard Template Library”,翻译过来就是标准模板库。STL 是 C++ 标准库的一个重要组成部分,STL 实现了常用的数据结构和算法 ,蕴含其间的泛型编程和代码复用的思想深刻 ...
STL实现—迭代器
迭代器
一、实验内容本节实验我们将为大家讲解迭代器,主要介绍 5 种常见迭代器:输入、输出迭代器,前向逆向迭代器,双向迭代器和随机迭代器。主要内容包括各自的构造方法和操作方法。
1.1 知识点
输出迭代器
输入迭代器
前向迭代器
双向迭代器
随机迭代器
迭代器辅助函数
1.2 实验环境
g++
ubuntu 16.04
1.3 代码获取可以通过以下链接获取本课程的源码内容,本次实验内容主要包含在文件Iterator.h。
123//获取代码wget https://labfile.oss.aliyuncs.com/courses/1166/mySTL.zipunzip -q mySTL.zip -d ./Code/
二、迭代器详述迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针的接口,所谓迭代器是一种概念上的抽象:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,它可以把抽象容器和通用算法有机的统一起来。迭代器基本分为五种,输入输出迭代器,前向逆向迭代器,双向迭代 ...
Linux-Bash
bash学习记录——实验楼
1. 简介Bash(GNU Bourne-Again Shell )是一个为GNU计划编写的Unix shell,它是许多Linux平台默认使用的shell。
shell是一个命令解释器,是一个介于操作系统内核与用户之间的绝缘层。准确地说,他也是能力很强的计算机语言,被称为解释性语言或脚本语言。它可以通过将系统调用、公共程序、工具和编译过的二进制程序“粘合”在一起来建立应用,这是大多数脚本语言的共同特征,所以有时候脚本语言又称为“胶水语言”。
事实上,所有的UNIX命令和工具再加上公共程序,对于shell脚本来说,都是可调用的。Shell脚本对于管理系统任务和其他的重复工作的例程来说,表现得非常好,根本不需要那些华而不实的成熟紧凑的编译型程序语言。
2. 初步练习1.Hello World行首以 # 开头(除#!之外)的是注释。#!是用于指定当前脚本的解释器,我们这里为bash,且应该指明完整路径,所以为/bin/bash
1234567891011121314$ vim hello.sh #使用vim编辑hello.shecho Hello World # ...
Linux学习记录-Vim
Vim常规命令
二 删除|移动
撤销 u
粘贴 p
重做 CRTL+R
插入文本 A
插入 i
删除 d
替换 r
替换插入 cw
删除后半部分插入 c$
括号匹配 % (移动到括号上再输入%)
查找字符串 /: 向前查 ?:向后查
三 更改类操作符
四 查找|替换|匹配
五 外部命令
六 查找|插入|复制|粘贴|替换
七 帮助|自动补全
N、Linux轻松一刻
一、火焰天冷的时候,要是有个火炉就好了。这里有个有趣的程序:
123$ sudo apt-get install libaa-bin# 提示 command not found ,请自行解决$ aafire
二、屏幕特效(cmatrix)123$ sudo apt-get update$ sudo apt-get install cmatrix$ camtris
三、图画轻松一下cowsay命令,可以让你在终端里以一种动物说话的形式打印出一段话。
1234567891011121314151617181920# 更新软件包$ sudo apt update# 安装$ sudo apt install -y cowsay# 默认是一只牛$ cowsay hello shiyanlou# 加上'-l'参数打印所有支持的动物(其实不只是动物)种类$ cowsay -l# 使用'-f'参数选择动物种类$ cowsay -f elephant hello shiyanlou# 安装 fortune-zh$ sudo apt-get install for ...
九、数据流重定向
九、数据流重定向一、实验介绍1.1 实验内容你可能对重定向这个概念感到些许陌生,但你应该在前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中。这其实就是重定向,将原本输出到标准输出的数据重定向到一个文件中,因为标准输出(/dev/stdout)本身也是一个文件,我们将命令输出导向另一个文件自然也是没有任何问题的。
1.2 实验知识点
重定向怎么用
文件描述符(0,1,2)
二、数据流重定向下面我们简单的回顾一下我们前面经常用到的两个重定向操作:
123$ echo 'hello shiyanlou' > redirect$ echo 'www.shiyanlou.com' >> redirect$ cat redirect
当然前面没有用到的<和<<操作也是没有问题的,如你理解的一样,它们的区别在于重定向的方向不一致而已,>表示是从左到右,<右到左。
2.1 简单的重定向在更多了解 Linux 的重定向之前,我们需要先知道一些基本的东 ...
八、简单的文本处理
tr|col|join|paste
五、Linux下的帮助命令
Linux下的帮助命令一、实验介绍1 实验内容我们时常使用 Linux 的命令,一些常用的命令即使不背我们也能记住,而一些较长的命令或是一些不常用的参数甚至是不常用的命令需要用时怎么也想不出来。本课程将带你好好利用 Linux 系统自带的帮助工具与文档。
1 实验知识点
内建命令与外部命令之分
help , man , info 命令的使用以及区别
二、内建命令与外部命令什么是内建命令,什么是外部命令呢?这和帮助命令又有什么关系呢?
因为有一些查看帮助的工具在内建命令与外建命令上是有区别对待的。
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在 bash 源码的 builtins 里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大, ...
六、Linux任务计划crontab
Linux任务计划crontab一、实验介绍1.1 实验内容我们时常会有一些定期定时的任务,如周期性的清理一下/tmp,周期性的去备份一次数据库,周期性的分析日志等等。而且有时候因为某些因素的限制,执行该任务的时间会很尴尬。本课程将带你很好的利用 Linux 系统的计划工具
1.2 实验知识点
crontab 语法
1.3 参考资料本节部分内容参考以下文档制作:
例行性工作排程(crontab) - 鸟哥私房菜
Linux Crontab 百度百科
二、crontab 的使用
crontab 命令常见于 Unix 和类 Unix 的操作系统之中(Linux 就属于类 Unix 操作系统),用于设置周期性被执行的指令。
2.1 crontab简介crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell sc ...
七、命令顺序控制与管道
顺序执行、选择执行、管道、cut 命令、grep 命令、wc 命令、sort 命令等,高效率使用 Linux 的技巧。