STL--vector
概念:vector为动态容器模板类,可以视为可变长数组
定义:
vector<int>v vector<double>v(n)// 定义一个含有n个double元素的vector对象 vector<int> s(first, last); // 定义一个vector对象,并从由迭代器first和last定义的序列[first, last)中复制初值
vector常用的的函数与方法
s[i] // 直接以下标方式访问容器中的元素 s.front() // 返回首元素 s.back() // 返回尾元素 s.push_back(x) // 向表尾插入元素x s.size() // 返回表长 s.empty() // 表为空时,返回真,否则返回假 s.pop_back() // 删除表尾元素 s.begin() // 返回指向首元素的随机存取迭代器 s.end() // 返回指向尾元素的下一个位置的随机存取迭代器 s.insert(it, val) // 向迭代器it指向的元素前插入新元素val s.insert(it, n, val)// 向迭代器it指向的元素前插入n个新元素val s.insert(it, first, last) // 将由迭代器first和last所指定的序列[first, last)插入到迭代器it指向的元素前面 s.erase(it) // 删除由迭代器it所指向的元素 s.erase(first, last)// 删除由迭代器first和last所指定的序列[first, last) s.reserve(n) // 预分配缓冲空间,使存储空间至少可容纳n个元素 s.resize(n) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),元素默认值将填满扩展出的空间 s.resize(n, val) // 改变序列长度,超出的元素将会全部被删除,如果序列需要扩展(原空间小于n),val将填满扩展出的空间 s.clear() // 删除容器中的所有元素 s.swap(v) // 将s与另一个vector对象进行交换 s.assign(first, last) // 将序列替换成由迭代器first和last所指定的序列[first, last),[first, last)不能是原序列中的一部分
用代码实现的形式为:
#include<bits/stdc++.h> using namespace std; int main() { vector<int> v,t; int temp; int m,n; cin>>m; for(int i=0;i<m;i++) { cin>>temp; v.push_back(temp);//向容器尾插入元素 } cout<<v.front()<<" "<<v.back()<<endl;//返回首尾元素 cout<<v[0]<<endl; // 直接以下标方式访问容器中的元素 cout<<v.size()<<endl; //容器的大小 v.pop_back();//删除容器尾元素 if(v.empty()==true)cout<<"YES"<<endl;//判断容器是否为空 else cout<<"NO"<<endl; vector<int>::iterator it,rit; it=v.begin();//返回元素首元素的迭代器 rit=v.end();//返回元素尾元素的后一个元素的迭代器 for(;it!=rit;it++) { cout<<*it<<" "; } cout<<endl; vector<int>::iterator tit; cin>>n; for(int i=0;i<n;i++) { tit=t.begin(); cin>>temp; t.insert(tit,temp);//向迭代器tit指向的元素前插入新元素temp } cin>>temp; tit=t.end(); t.insert(tit,3,temp);//向迭代器tit指向的元素前插入n个新元素temp tit=t.begin(); t.erase(tit);//删除由迭代器it所指向的元素 v.swap(t); for(int i=0;i<t.size();i++) { cout<<t[i]<<" "; } cout<<endl; t.clear(); if(t.empty()==true)cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }
结果如图所示:
引用参考:
vector的用法