现在的位置: 首页 > 综合 > 正文

STL初涉~

2013年06月12日 ⁄ 综合 ⁄ 共 5258字 ⁄ 字号 评论关闭

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

 

 

抱歉!评论已关闭.