STL之Vector的一些编程练习

来源:互联网 发布:淘宝男模特招聘网 编辑:程序博客网 时间:2024/06/02 01:51
#include<iostream>#include<vector>using namespace std;void out(int &a){cout<<a<<endl;}int main(){//插入,在位置的前面插入//多个值插入,从第一个位置的值到第二个位置的前一个值 vector<int> s;   for(int i=0;i<5;i++)s.push_back(i);for_each(s.begin(),s.end(),out);s.insert(s.begin(),1);cout<<"后:"<<endl;for_each(s.begin(),s.end(),out);vector<int> c;for(int i=0;i<3;i++)c.push_back(9);s.insert(s.begin(),c.begin(),c.end());cout<<"后来:"<<endl; for_each(s.begin(),s.end(),out);   return 0;} //c.at(),c[index]返回的为引用//c.front()首个元素c.back()最后一个元素//sort略 /*****删除:位置或区间********* vector<int> s;   for(int i=0;i<5;i++)s.push_back(i);for_each(s.begin(),s.end(),out);s.erase(s.begin());//删除位置为该位置 for_each(s.begin(),s.end(),out);s.erase(s.begin(),s.end()-1);//删除的元素为从第一个位置到第二个位置的前一个 for_each(s.begin(),s.end(),out);****************/ /*****swap交换(可同类型,可不同)**********void out(int &a){cout<<a<<endl;}vector<int> c;for(int i=0;i<3;i++)c.push_back(9);cout<<"C:"<<endl;for_each(c.begin(),c.end(),out);vector<int> s;for(int i=0;i<5;i++)s.push_back(i); cout<<"S:"<<endl;for_each(s.begin(),s.end(),out);c.swap(s);cout<<"C:"<<endl;for_each(c.begin(),c.end(),out);cout<<"S:"<<endl;for_each(s.begin(),s.end(),out);*******************//***find(s.begin(),s.end(),常数)***** ****find_if(s.begin(),s.end(),一元bool函数)****均返回指针值不是下标************ bool eq(int i){if(i==3)return true;return false;}vector<int> s;for(int i=0;i<5;i++)s.push_back(i);    cout<<"数据为3的下标为:"<<endl;cout<<find_if(s.begin(),s.end(),eq)-s.begin();  cout<<find(s.begin(),s.end(),3)-s.begin(); return 0; ****************************************//*******C++中对正逆序遍历提供的两种迭代器与函数*   vector<int> s; for(int i=0;i<5;i++) s.push_back(i); cout<<"顺序:"<<endl; vector<int>::iterator the; for(the=s.begin();the!=s.end();the++) cout<<*the<<endl; cout<<"逆序:"<<endl; vector<int>::reverse_iterator it; for(it=s.rbegin();it!=s.rend();it++) cout<<*it<<endl;  ****************//***增加push_back、删除pop_back、遍历**** vector<int> s;  for(int i=0;i<10;i++) s.push_back(i);//尾部增加  vector<int>::iterator it; cout<<"修改前"<<endl; for(it=s.begin();it!=s.end();it++) cout<<*it<<endl; cout<<"修改后"<<endl; for(int i=0;i<5;i++) s.pop_back();//尾部删除   for(it=s.begin();it!=s.end();it++) cout<<*it<<endl;*********************///未reserve就 s[0]=1; 是错误的/**正确**** vector<int> s;s.reserve(4);s[0]=1;***********/ /***容量****** vector<int> s;s.reserve(10);//容器容量定为10,但是不初始化s,size仍为0 cout<<"容器大小:"<<s.size()<<endl;cout<<"容器容量:"<<s.capacity()<<endl;cout<<"容器最大容量:"<<s.max_size()<<endl;s.resize(20);//容器容量定为20,初始化s并将其初始化问0,size为20 for(int i=0;i<20;i++)cout<<s[i]<<endl;//输出0 cout<<"容器大小:"<<s.size()<<endl;//20cout<<"容器容量:"<<s.capacity()<<endl;//20cout<<"容器最大容量:"<<s.max_size()<<endl;************//****返回值不弹出:back()***vector<int> s;s.push_back(1);for(int i=0;i<10;i++)cout<<s.back()<<endl;**************//***两种遍历方法** vector<int> s;for(int i=0;i<10;i++)s.push_back(i);for(int i=0;i<10;i++)cout<<s.at(i)<<endl; for(int i=0;i<s.size();i++)cout<<s[i]<<endl;************//*倒序输出,并清空----一种遍历  vector<int> s;for(int i=0;i<10;i++)s.push_back(i);while(!s.empty()){int t=s.back();cout<<t<<endl;s.pop_back();}cout<<s.size();*************//***morethan、out函数*** bool morethan(int& i){if(i>10)return true;return false;}void out(int &i){cout<<i<<endl;}**********/ /**输出符合条件的个数 和 对每一个元素进行操作 vector<int> s;for(int i=0;i<5;i++)s.push_back(i);for(int i=0;i<2;i++)s.push_back(11+i);cout<<"10以上的:"<<count_if(s.begin(),s.end(),morethan)<<endl;//morethan函数 cout<<"输出:"<<endl;for_each(s.begin(),s.end(),out);//out函数 ********************//******对每一个元素进行操作**void plusw(int& a){a++;} void out(int&a){cout<<a<<endl;} vector<int> s; for(int i=0;i<10;i++)s.push_back(i);cout<<"之前:"<<endl; for_each(s.begin(),s.end(),out);for_each(s.begin(),s.end(),plusw);cout<<"处理后:"<<endl; for_each(s.begin(),s.end(),out);********************/

四种正向遍历:
for_each
s.at()
s[index]

iterator

一种逆序遍历:

reserve_iterator

s.rbegin()

s.rend()


插入,删除,查找


交换



0 0