C++程序格式(以后不管什么就是这个格式)
#include<bits/stdc++.h>
using namespace std;
int main()
{
********
具体代码部分
********
return 0;
}
Vector
需要导入头文件#include <vector>
,不过使用C++万能头文件的话,可以不使用相关容器的头文件,c++万能头文件:#include<bits/stdc++.h>
如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行,具体值为何,取决于存储在vector 中元素的数据类型;如果为int型数据,那么标准库将用 0 值创建元素初始化式;如果 vector 保存的是含有构造函数的类类型(如 string)的元素,标准库将用该类型的默认构造函数创建元素初始化式;元素类型可能是没有定义任何构造函数的类类型。这种情况下,标准库仍产生一个带初始值的对象,这个对象的每个成员进行了值初始化。
- 初始化:
//初始化一个int类型的vector数组
vector<int>vec0;
//初始化一个char类型型的vector数组
vector<char>vecc;
//初始化10个元素均为0 (默认为0)
vector<int>vec1(10);
//初始化10个元素均为4
vector<int>vec2(10,4);
//初始化10个string元素字符串均为hello
vector<string>vec3(10,"hello");
- 基本操作
//使用size()可以获得vector元素的个数
int length=vec1.size();
//使用empty()可以获得vector元素是否为空
bool isEmpty=vecc.empty();
//insert(a,b,c)在a位置插入b个c
vec0.insert(vec0.begin(),5,3);
//pop_back()用于删除末尾元素
vec0.pop_back();
//用push_back()用于添加一个元素
vec1.push_back(100);
//输出vector的第一个元素
cout<<vec0[1]<<endl;
//erase(a,b)删除a-b之间的所有元素,其他元素前移
vec3.erase(++vec3.begin(),--vec3.end());
//判断两个vector是否相等
cout<<(vec1==vec2)?true:false;
//清空元素
vec1.clear();
//获取迭代器首地址
vector<string>::iterator iter=vec3.begin();
//获取const类型迭代器的首地址
vector<int>::const_iterator c_iter = vec1.begin();
- 遍历方法
//下标法(vector容器的特有访问方法,一般容器只能通过迭代器访问)
int length = vec1.size();
for(int i=0;i<length;i++)
{
cout<<vec1[i];
}
cout<<endl<<endl;
//迭代器法(所有容器通用的遍历方法)
vector<int>::const_iterator iterator = vec1.begin();
for(;iterator != vec1.end();iterator++)
{
cout<<*iterator;
}
deque
deque容器类与vector类似,支持随机访问和快速插入删除,它在容器中某一位置上的操作所花费的是线性时间。与vector不同的是,deque是双端数组,而vector是单端的,deque还支持从开始端插入数据:push_front()。其余类似vector操作方法的使用。
deque<int>de1;
de1.push_back(1);
de1.push_front(4);
de1.push_back(3);
最终结果是413
List
- 定义与初始化
//声明一个空的int类型的list
list<int>list1;
//声明一个长度为3的int类型的list,默认为0
list<int>list2(3);
//声明一个长度为3的int类型的list,值均为2
list<int>list3(3,2);
//声明一个int类型的list,以list2的值初始化
list<int>list4(list2);
//与上句功能一样
list<int>list5(list2.begin(),list2.end());
- 常用操作方法
//往list1中插入元素10
list1.push_back(10);
//给list分配值,其值为list2的所有值,与用list2初始化list1操作很类似
list1.assign(list2.begin(),list2.end());
//从list1中删除一个元素
list1.pop_back();
//清空list1
list1.clear();
//声明一个list1的begin迭代器
list<int>::const_iterator iter_begin=list1.begin();
//判定list1是否为空
bool isEmpty=list1.empty();
//list1.back()返回list1的最后一个元素(就是数字本身,不是引用,也不是迭代器)
cout<<list1.back()<<endl;
//list1.front()返回list1的第一个元素(就是数字本身,不是引用,也不是迭代器)
cout<<list1.front()<<endl;
//insert(a,b,c)从a位置起插入b个c
list1.insert(list1.begin(),3,2);
//rbegin()返回的是相当于末尾元素的指针(注意是指针,需要用*来获取其指向的值)
cout<<"rbegin() is "<<*list1.rbegin()<<endl;
//删除所有的值为2的元素
list1.remove(2);
//list反转reverse()
list1.reverse();
//sort()排序,默认是升序排序
list1.sort();
//size()为list所包含的元素个数
cout<<list1.size()<<endl;
//删除list中的重复元素
list1.unique();
- 迭代遍历
//除了vector能使用下标遍历以外,其他的容器都只能使用迭代器来使用
for(list<int>::const_iterator iter=list1.begin();iter!=list1.end();iter++){
cout<<*iter<<endl;
}