vector容器与queue以及stack的基本使用方法
目录
vector-容器:
vector定义
vector是向量类型,可以容纳许多类型的数据,因此也被称为容器
进行vector操作前应添加头文件 vector
vector初始化
vector<类型>标识符
初始化的方法:
1.
//定义具有10个整型元素的向量,不具有初值,其值不确定
vector<int>a(10);
2.
//定义具有10个整型元素的向量,且给出的每个元素初值为1
vector<int>a(10,1);
3.
//用向量b给向量a赋值,a的值完全等价于b的值
vector<int>a(b);
4.
//将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型
vector<int>a(b.begin(),b.begin+3);
5.
//从数组中获得初值
int b[7]={1,2,3,4,5,6,7};
vector<int> a(b,b+7);
vector一般常用操作
void push_back(const T& x):向量尾部增加一个元素X
void pop_back():删除向量中最后一个元素
void clear():清空向量中所有元素
也可以直接类似数组下标访问
vector<int>a(10,1);
cout<<a[5]<<endl;
int size() const:返回向量中元素的个数
bool empty() const:判断向量是否为空,若为空,则向量中无元素
vector 迭代器操作
迭代器遍历
vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
for(it=obj.begin();it!=obj.end();it++)
{
cout<<*it<<" ";
}
迭代器删除操作
iterator erase(iterator it):删除向量中迭代器指向元素
iterator erase(iterator first,iterator last):删除向量中[first,last)中元素
迭代器插入操作
iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x
iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x
二维vector
变量声明
vector<vector<int> > 变量名;
例如:vector<vector<int>> ans;
添加行
vector<vector<int>> ans;
ans.push_back(vector<int>());
行列长度
vector<vector<int>> ans;
ans.size(); //横向
ans[0].size() //纵向
遍历类似二维数组
for(int i=0;i<v2d.size();i++)
{
for(int j=0;j<v2d[0].size();j++)
{
cout<<v2d[i][j]<<" ";//使用下标访问
}
}
queue-队列
只能访问 queue 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。–先进先出原则
基本操作:
front():返回 queue 中第一个元素的引用。
如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
back():返回 queue 中最后一个元素的引用。
如果 queue 是常量,就返回一个常引用;如果 queue 为空,返回值是未定义的。
push(const T& obj):在 queue 的尾部添加一个元素的副本。
这是通过调用底层容器的成员函数 push_back() 来完成的。
push(T&& obj):以移动的方式在 queue 的尾部添加元素。
这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。
pop():删除 queue 中的第一个元素。
size():返回 queue 中元素的个数。
empty():如果 queue 中没有元素的话,返回 true。
emplace():用传给 emplace() 的参数调用 T 的构造函数,在 queue 的尾部生成对象。
swap(queue<T> &other_q):将当前 queue 中的元素和参数 queue 中的元素交换。
它们需要包含相同类型的元素。也可以调用全局函数模板 swap() 来完成同样的操作。
stack-栈
栈(stack)本身是一种后进先出的数据结构
基本操作
top():返回一个栈顶元素的引用,类型为 T&。
如果栈为空,返回值未定义。
push(const T& obj):可以将对象副本压入栈顶。
这是通过调用底层容器的 push_back() 函数完成的。
push(T&& obj):以移动对象的方式将对象压入栈顶。
这是通过调用底层容器的有右值引用参数的 push_back() 函数完成的。
pop():弹出栈顶元素。
size():返回栈中元素的个数。
empty():在栈中没有元素的情况下返回 true。
emplace():用传入的参数调用构造函数,在栈顶生成对象。
swap(stack<T> & other_stack):将当前栈中的元素和参数中的元素交换。
参数所包含元素的类型必须和当前栈的相同。对于 stack 对象有一个特例化的全局函数 swap() 可以使用。
完。