STL之Vector的一些编程练习
2016-03-09 22:11
323 查看
#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;//20 cout<<"容器容量:"<<s.capacity()<<endl;//20 cout<<"容器最大容量:"<<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()
插入,删除,查找
交换
相关文章推荐
- 关于java.lang.String理解中的一些难点
- 手动安装python包
- Spring 定时器的使用
- BZOJ4199 NOI2015 品酒大会 题解&代码
- 关于JRE和JDK的区别
- cto首席技术官的知识点
- AlphaGo首局战胜李世石
- POJ1743 Musical Theme 题解&代码
- # java对xml文件的基本操作
- 关于数组以及c#学习问题
- python BDD 框架之lettuce
- elasticsearch java api 创建客户端连接(Transport Client)
- 自考C++程序设计试题2010年10月
- Python爬虫系列:1
- C++接口实现总结
- x264代码剖析(六):encode()函数之x264_encoder_headers()函数
- SpringMVC的参数获取方式
- x264代码剖析(六):encode()函数之x264_encoder_headers()函数
- 会员中心增加会员登录次数显示功能–PHPCMS V9
- Java高级工程师应该具备的知识点