一、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;
}