在C++的标准库中,有个名为 vector 的类模板,以下将是对其的一点总结;
(1)需要的头文件以及命名空间:
#include <vector>
using std::vector;
(2)vector 的 简介
vector 表示 对象的集合,其中所有对象的类型都相同,常被称为“容器”。
这个对象可以是任何对象,注意引用并不是对象,包括基础类型,类 甚至是 vector 类型。
(3)vector 的初始化
vector<T> v1; //v1是一个空vector,元素类型为T类型,执行默认初始化;
vector<T> v1(v2); //v1中包含v2中所有元素的副本,等价 v1 = v2;
vector<T> v1(n ,val); //包含n个元素,每个元素的值都是 val;
vector<T> v1(n); // 包含 n 个元素,默认执行初始化;
vecrot<T> v1{a,b,c,d...} //包含相应个数的元素,每个元素都是相应的值。
(4)vector 的一些相关操作(相关实例都会放在后面的云盘里以帮助理解)
v.push_back(i) 在容器的末尾插入元素 i ;
v.pop_back(); 删除容器末尾的元素
v.insert() 在特殊位置的元素前插入一个新的元素,元素插入后会增加容器的大小
v.erase() 从容器中删除一个 或者 一段(v.erase(first,end))元素
v.swap(v1) 交换容器 v 和 v1 的元素
v.begin() 得到容器第一个元素的值
v.end() 得到容器“尾元素的下一个位置”,是容器的一个本不存在的“尾后”
v.clear() 清空容器
v.size() 获取容器的大小,返回一个无符号的数
v.empty() 若容器为空,返回true,否则返回false
vector<int>::iterator it; //使用迭代器访问容器
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
二 虽然容器的对象可以为类,但是注意 vector 不要定义在类中,你能想象一下在写入文件时,一个类里面有一个vector,这个vector里面又包含了这个类的感觉。最后写入文件的只有一个类的值。
#include <iostream> #include <vector> class Student{ private: int number; char[10] name; }; vector<Student> v1;
三 算法
(1)使用sort排序:需要头文件#include<algorithm>, sort(vec.begin(),vec.end()); //(默认是按升序排列,即从小到大).
bool Comp(const int &a,const int &b) //可以通过重写排序比较函数按照降序比较 { return a>b; } 调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。
关于之前提到的云盘连接
https://yunpan.cn/OckwF8MqmhdHz9 (提取码:129d)