vector和queue的常用函数

一、queue

push():会将一个元素置入queue中;

front():会返回queue内的第一个元素(也就是第一个被置入的元素)

back():会返回queue中的最后一个元素(也就是最后被插入的元素)

pop():会移除queue内的第一个元素(也就是第一个被置入的元素)

注意:
(1)front()和back()仅仅只是返回元素,并不对queue中的元素移除,所以多次执行这两个成员函数,而不执行pop(),返回的结果一样;(2)pop()虽然执行移除操作,但是并不返回被移除对象的值;
(3)如果想返回queue的元素,并移除返回的元素,就要同时执行fornt()和pop();(4)如果queue内没有元素,那么front(),back(),pop()的执行都会导致未定义的行为,所以在执行这三个操作是,可以通过size()和empty()判断容器是否为空;

---------------------

本文来自 lanzhihui_ 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/lanzhihui_10086/article/details/42428545?utm_source=copy

二、Vector

一、 定义和初始化
vector< typeName > v1;       //默认v1为空,故以下的赋值是错误的v1[0]=5;
vector<typeName>v2(v1); 或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被扩充为v1.size()。
vector< typeName > v3(n,i);//v3包括n个值为i的typeName类型元素
vector< typeName > v4(n); //v4含有n个值为0的元素
int a[4]={0,1,2,3,3}; vector<int> v5(a,a+5);//v5的size为5,v5被初始化为a的5个值。后一个指针要指向将被拷贝的末元素的下一位置。
vector<int> v6(v5);//v6是v5的拷贝
vector< 类型 > 标识符(最大容量,初始全部值);

二、 值初始化
1>     假设没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。
2>     假设保存的式含有构造函数的类类型的元素,标准库使用该类型的构造函数初始化。
3>     假设保存的式没有构造函数的类类型的元素,标准库产生一个带初始值的对象,使用这个对象进行值初始化。


三、vector对象最重要的几种操作
1. v.push_back(t)    在容器的最后加入一个值为t的数据,容器的size变大。
    另外list有push_front()函数,在前端插入,后面的元素下标依次增大。
2. v.size()        返回容器中数据的个数,size返回对应vector类定义的size_type的值。v.resize(2*v.size)或                  

v.resize(2*v.size, 99) 将v的容量翻倍(并把新元素的值初始化为99)
3. v.empty()     推断vector是否为空
4. v[n]           返回v中位置为n的元素
5. v.insert(pointer,number, content)    向v中pointer指向的位置插入number个content的内容。
    还有v. insert(pointer, content),v.insert(pointer,a[2],a[4])将a[2]到a[4]三个元素插入。
6. v.pop_back()    删除容器的末元素,并不返回该元素。
7.v.erase(pointer1,pointer2) 删除pointer1到pointer2中间(包含pointer1所指)的元素。
   vector中删除一个元素后,此位置以后的元素都须要往前移动一个位置,尽管当前迭代器位置没有自己主动加1,
   可是因为兴许元素的顺次前移,也就相当于迭代器的自己主动指向下一个位置一样。
8. v1==v2          推断v1与v2是否相等。
9. !=、<、<=、>、>=      保持这些操作符惯有含义。
10. vector<typeName>::iterator p=v1.begin( ); p初始值指向v1的第一个元素。*p取所指向元素的值。
      对于const vector<typeName>仅仅能用vector<typeName>::const_iterator类型的指针訪问。
11.   p=v1.end( ); p指向v1的最后一个元素的下一位置。
12.v.clear()      删除容器中的全部元素。12.v.clear()      删除容器中的全部元素。

#include<algorithm>中的泛函算法
搜索算法:find() 、search() 、count() 、find_if() 、search_if() 、count_if()
分类排序:sort() 、merge()
删除算法:unique() 、remove()
生成和变异:generate() 、fill() 、transformation() 、copy()
关系算法:equal() 、min() 、max()
sort(v1.begin(),vi.begin()+v1.size/2); 对v1的前半段元素排序
list<char>::iterator pMiddle =find(cList.begin(),cList.end(),'A');找到则返回被查内容第一次出现处指针,否则返回end()。
vector< typeName >::size_type x ; vector< typeName >类型的计数,可用于循环如同for(int i)


初学C++的程序猿可能会觉得vector的下标操作能够加入元素,事实上不然:

vector<int> ivec;   // empty vector

for (vector<int>::size_type ix = 0; ix != 10; ++ix)

     ivec[ix] = ix; // disaster: ivec has no elements

上述程序试图在ivec中插入10个新元素,元素值依次为0到9的整数。可是,这里ivec是空的vector对象,并且下标仅仅能用于获取已存在的元素。

这个循环的正确写法应该是:

for (vector<int>::size_type ix = 0; ix != 10; ++ix)

     ivec.push_back(ix); // ok: adds new element with value ix


警告:必须是已存在的元素才干用下标操作符进行索引。通过下标操作进行赋值时,不会加入不论什么元素。仅能对确知已存在的元素进行下标操作 

-------------------------本文转载自https://www.cnblogs.com/mengfanrong/p/3770971.html

猜你喜欢

转载自blog.csdn.net/HYbuery/article/details/82865035
今日推荐