一、vector
1、
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> #include<vector> using namespace std; int main() { vector<double>a; a.push_back(1); a.push_back(2); a.push_back(3); a.push_back(4); a.push_back(5); for(int i = 0; i < a.size(); ++i) { cout<<a[i]<<endl; } return 0; }
2、
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> #include<map> #include<vector> using namespace std; int main () { int n; int w; vector<int>num; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { scanf("%d",&w); num.push_back(w); } sort(num.begin(),num.end()); for(int j=0;j<num.size();j++) printf("%d ",num[j]); printf("\n"); } return 0; }
3、
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> #include<vector> using namespace std; int ar[10] = { 12, 45, 234, 64, 12, 35, 63, 23, 12, 55 }; char str*= "Hello World"; int main() { vector<int>vec1(ar, ar+10); //first=ar,last=ar+10,不包括ar+10 vector<char>vec2(str,str+strlen(str)); //first=str,last= str+strlen(str), cout<<"vec1:"<<endl; //打印vec1和vec2,const_iterator是迭代器,后面会讲到 //当然,也可以用for (int i=0; i<vec1.size(); i++)cout << vec[i];输出 //size()是vector的一个成员函数 for(vector<int>::const_iterator p=vec1.begin(); p!=vec1.end(); ++p) cout<<*p; cout<<'\n'<<"vec2:"<<endl; for(vector< char >::const_iterator p1=vec2.begin(); p1!=vec2.end(); ++p1) cout<<*p1; cout<<'\n'; return 0; }
4、
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> #include<numeric> using namespace std; int main() { vector<int> v;//定义向量v int i; for(i=0; i<10; i++) { v.push_back(i); //尾部元素扩张方式赋值 } for(vector<int>::iterator it=v.begin(); it!=v.end(); it++) //使用iterator迭代器顺序遍历所有元素 { cout<<*it<<" "; //输出迭代器当前位置上的元素值 } cout<<endl; cout<<accumulate(v.begin(),v.end(),0)<<endl;//统计并输出向量所有元素的和 return 0; }
对比:
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> #include<numeric> using namespace std; int main() { vector<int> v;//定义向量v int i; for(i=0; i<10; i++) { v.push_back(i); //尾部元素扩张方式赋值 } vector<int>::iterator it; for(it=v.begin(); it!=v.end(); it++) //使用iterator迭代器顺序遍历所有元素 { cout<<*it<<" "; //输出迭代器当前位置上的元素值 } // for(int i=0; i<v.size(); i++) // cout<<v[i]; cout<<endl; cout<<accumulate(v.begin(),v.end(),0)<<endl;//统计并输出向量所有元素的和 return 0; }
插入数据:
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> using namespace std; int main() { vector<int> v; v.push_back(2); v.push_back(7); v.push_back(9); v.insert(v.begin(),8); v.insert(v.begin()+2,1); v.insert(v.end(),3); vector<int>::iterator it;//vector<int>::iterator it for(it=v.begin(); it!=v.end(); it++) { cout<<*it<<" "; } cout<<endl; cout<<v[3]; cout<<endl; return 0; }
删除数据:
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> using namespace std; int main() { vector<int> v; for(int i=0; i<10; i++) { v.push_back(i); } v.erase(v.begin()+2); vector<int>::iterator it; for(it=v.begin(); it!=v.end(); it++) { cout<<*it<<" "; } cout<<endl; v.erase(v.begin()+1,v.begin()+5); for(it=v.begin(); it!=v.end(); it++) { cout<<*it<<" "; } cout<<endl; v.clear(); for(it=v.begin(); it!=v.end(); it++) { cout<<*it<<" "; } cout<<endl; cout<<v.size()<<endl; return 0; }
2、使用reverse反向排列算法
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> using namespace std; int main() { vector<int> v; for(int i=0; i<10; i++) v.push_back(i); reverse(v.begin(),v.end()); vector<int>::iterator it; for(it=v.begin(); it!=v.end(); it++) { cout<<*it<<" "; } cout<<endl; return 0; }
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> using namespace std; int main() { int n; vector<int>v; int m; while(scanf("%d",&n)!=EOF) { v.clear(); for(int i=0;i<n;i++) { scanf("%d",&m); v.push_back(m); } reverse(v.begin(),v.end()); vector<int>::iterator p; for(p=v.begin();p!=v.end();p++) cout<<*p<<" "; cout<<endl; } return 0; }
使用sort算法对向量元素排序:
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> using namespace std; int main() { int n; int m; vector<int>v; while(scanf("%d",&n)!=EOF) { v.clear(); for(int i=0;i<n;i++) { scanf("%d",&m); v.push_back(m); } sort(v.begin(),v.end()); vector<int>::iterator p; for(p=v.begin();p!=v.end();p++) cout<<*p<<" "; cout<<endl; } return 0; }
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> using namespace std; int cmp(int a,int b) { return a>b; } int main() { int n; int m; vector<int>v; while(scanf("%d",&n)!=EOF) { v.clear(); for(int i=0;i<n;i++) { scanf("%d",&m); v.push_back(m); } sort(v.begin(),v.end(),cmp); vector<int>::iterator p; for(p=v.begin();p!=v.end();p++) cout<<*p<<" "; cout<<endl; } return 0; }
向量容器向量的大小
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> #include<algorithm> #include<stack> #include<queue> #include<math.h> using namespace std; int main() { vector<int> v(10); for(int i=0; i<10; i++) { v[i]=i; } /*使用size()方法可以返回向量的大小 即元素的个数 使用empty()方法返回向量是否为空,非空返回0;空返回1*/ cout<<v.size()<<endl<<v.empty()<<endl; v.clear(); cout<<v.size()<<endl<<v.empty()<<endl; return 0; }