一、小技巧的使用
1、sort命令
sort是Linux下的一个命令,对于Linux的一些命令可以利用"命令 --help"来查看一些用法。例如我们新创建一个文本文档test.txt,里面输入下面的内容。

输入sort命令进行排序,输出结果如下图所示。

下面将10和11也填入test.txt文本文档中

再进行编译运行后结果如下图所示,所以在这可以看出来,有点儿按照字符串去排的意思,因为从字符串的角度上来讲,因为首字母是1小于3

可以再追加几个进行测试,如下图所示。

排序的结果如下图所示,,是按照字符串的首字母顺序方式去排的。

那么这个命令有什么作用呢,它可以结合另外的一些命令去做一些比较复杂的事,比如说首先将test.txt拷贝一份,为test1.txt,修改里面的内容如下图所示。

可以用cat命令将两个文件的内容打印出来

之后再用sort命令进行排序,将两个文件合并到一起进行排序

还可以加一些约束显示,例如将两个文件中独有的部分打印出来

2、tmux的使用
首先检查是否已经有tmux,如下图所示,说明没有安装

首先输入下面的命令

之后再输入下面的命令进行安装

再输入tmux命令

回车后进入下面的界面

下面进行简单的测试使用,可以用来拆分窗口,例如Ctrl+B→松手→Shift+引号

Ctrl+B→松手→o,可以进行窗口切换

Ctrl+B→松手→%,可以进行再次分割

二、动态数组容器vector
1、基本使用
定义时需要引入头文件#include<vector>,基本格式如下,<>这个符号涉及到后续的模板的概念。
vector<类型> 变量名称;

如果前面不加命名空间using namespace std;,那么就要采用下面的这种输入方式。

vector也可以存放自定义类型,如下图所示。

vector也可以存放结构体类型,如下图所示。

vector也可以存放指针类型,如下图所示。

2、初始化
(1)初始化具体数值
使用4个5来初始化vector,如下图所示。


(2)初始化成某个数组


(3)某些特定场景创建vector
已经有了某个vector,下面想新创建一个vector,但是这个vector用前面vector的一部分信息,下面利用v2来创建v3,代码如下图所示,用v2的迭代器区间来初始化v3。


有的时候不需要整个数组,只需要一部分,这个时候可以进行偏移,如下图所示,这个时候就是起始地址向后挪两个进行打印。


并且第二个元素也没必要一定使用end,如下图所示,可以理解为是两个指针类型的参数,可以进行偏移。


(4)vector与构造函数
现在的问题是这个构造函数是了100次,还是调用了1次被赋值为100份。

如下图所示,所以构造函数只被调用了一次。

而下面这种方式则是对构造函数调用了100次

所以对与以上两种方式调用构造函数的次数是不一样的,如果构造函数很复杂需要计算很久,那么就采用第一种方式进行初始化。
(5)创建二维vector
下面演示创建一个20行100列且元素都为-1的二维vector

三、vector使用
1、遍历
下面代码是可以打印出10~19


2、迭代器
如下所示利用地址偏移思想来进行取值来遍历,但是iterator与地址还是有差异的。


3、auto
下面来解释一下下面的代码,:指的是在后面的数组中进行变量,auto通过后面的数组进行推断,&表示引用,而不是拷贝。


4、二维vector
下面这种做法是一开始定义的时候就开辟空间


下面这种方式是先定义后续再开辟空间,首先在定义完二维数组后开辟出5行的空间,之后再在每一行中开辟10列的空间。


其实可以实现每一行元素不一样多的情形,就是说,没必要一定是一个矩阵,如下图所示,


四、vector相关函数
1、sort函数
需要引入头文件#include<algorithm>,下面进行打印,0~9,并进行排序

修改程序vector为从9到0,之后再进行排序输出,说明排序生效了

以上涉及到的排序都是从小到大排序,下面来修改代码实现从大到小排序

2、push_back函数
push_back函数就是将已有的元素追加到vector后面去

3、resize函数
顾名思义resize就是重新分配vector的大小

以特定的数据对vector数据进行初始化

4、insert函数
其实也就是将两个vector进行合并下面实现将v2后接入v1

5、find函数
查找某个元素是否在vector内,下图程序是通过find函数查找元素4的位置

下面完善一下程序,在vector中查找100这个元素,由于不包含这个元素,所以没有

6、clear函数
清空所有元素

7、empty函数
返回一个bool值来判断vector是否为空

8、front函数和back函数
front函数返回vector首个元素,back函数返回vector最后一个元素

五、其他使用
1、自定义排序
比如说结构体A可以理解为某二维坐标,现在想要寻求横纵坐标加和越大越好,就是将两个和较大的排在前面


还可以修改其他规则,不管纵坐标,只看横坐标进行排序


还可以采用下面这种方式去进行自定义排序


2、转指针
要把vector转为一个指针只需要对首元素取地址即可,首先定义一个10个10的vector,之后取周哥元素的地址,遍历读取,观察取值是否一致。

