文章标题

/*
//vector(向量)类模板
#pragma warning(disable:4186)  //消除编译警告信息
#include<vector>

int main()
{
    vector<int> vec1;
    cout<<"ok!"<<endl;
    return 0;
}

*/

/*
#include<vector>
#include<string>
#include<iostream>
using namespace std;
int  main()
{   
    vector<int>vec1;
    vec1.reserve(5);
    vec1.push_back(10);
    vec1.push_back(20);
    vec1.push_back(30);
    vec1.push_back(40);

    vector<int>::iterator it1;      //定义一个迭代器对象
    for(it1=vec1.begin();it1!=vec1.end();++it1)  //用迭代器遍历整个容器
        cout<<*it1<<endl;


    vector<string> vec;  //vector是类模板,使用时,先定义类对象
    vec.reserve(4);       //预先设置容器的容量
    cout<<"the size is 4"<<endl; 
    vec.push_back("1.Yangyang");   //向容器中添加元素
    vec.push_back("2.Lijian");
    vec.push_back("3.Eson");
    //vec.push_back("4.Leijiayin");
    cout<<"OK!"<<endl;

    vector<string>::iterator it;      //定义一个迭代器对象
    for(it=vec.begin();it!=vec.end();++it)  //用迭代器遍历整个容器
        cout<<*it<<endl;

    int m = vec.size();         //返回容器中现有的元素个数
    int n = vec.capacity();    //返回容器中能够容纳的元素个数
    int k = vec.max_size();     //返回容器所能容纳的最大元素数
    cout<<"vector:vec,size is"<<m<<endl; 
    cout<<"vector:vec,capacity is"<<n<<endl;
    cout<<"vector:vec,max_size is"<<k<<endl;

    vec.resize(10);       //修改容器的大小
    cout<<"resize 10 "<<endl;

    int n1=vec.capacity();
    int n2=vec.size();
    cout<<"vector:vec,capacity is"<<n1<<endl;
    cout<<"vector:vec,size is"<<n2<<endl;

    for(it=vec.begin();it!=vec.end();++it)
    {
        if(*it=="")
            cout<<"**********"<<endl;
        cout<<*it<<endl;
    }
    return 0;
}
*/

/*
#include<vector> 
#include<iostream>
using namespace std;

struct ST             //定义结构体类型
{
    int id;
    double db;
};

void Origin(int num,vector<ST>&vt)   //定义初始化函数
{
    int m=num;
    ST temp;
    for(int i=0;i<m;++i)
    {
        temp.id=i+1;
        temp.db=(i+1)*10;
        vt.push_back(temp);  //初始化向量
    }
}

int main()
{
    ST tmp;
    vector<ST> vec;
    Origin(5,vec);
    int size=vec.size();
    cout<<"size is  "<<size<<endl;
    while(!vec.empty())
    {
        tmp=vec.back();//输出尾部的元素
        cout<<"id "<<tmp.id<<"db "<<tmp.db<<endl;
        vec.pop_back();   //弹出末尾元素
    }
    return 0;
}
*/






/*

#include<iostream>
#include<vector>
using namespace std;


struct ST             //定义结构体类型
{
    int id;
    double db;
};

void Iter_for(vector<ST> &vt)   //用迭代器遍历vector向量容器
{
    ST temp;
    vector<ST>::iterator  iter;
    for(iter=vt.begin();iter!=vt.end();iter++)
    {
        temp=*iter;
        cout<<"id:  "<<temp.id<<"db:    "<<temp.db<<endl;
    }
}

void at_for(vector<ST> &vt)   //用at()函数遍历vector向量容器
{
    ST temp;
    int i=0;
    int m=vt.size();

    for(i=0;i<m;++i)
    {
        temp=vt.at(i);
        cout<<"id:  "<<temp.id<<"db:    "<<temp.db<<endl;
    }
}

void Origin(int num,vector<ST>&vt)   //定义初始化函数
{
    int m=num;
    ST temp;
    for(int i=0;i<m;++i)
    {
        temp.id=i+1;
        temp.db=(i+1)*10;
        vt.push_back(temp);  //初始化向量
    }
}

int main()
{
    ST tmp;
    vector<ST> vec;
    Origin(5,vec);
    int size=vec.size();
    cout<<"size is  "<<size<<endl;

    cout<<"Iterator output "<<endl;
    Iter_for(vec);
    cout<<"at()   output  "<<endl;
    at_for(vec);

    cout<<"empty()  usage:"<<endl;
    while(!vec.empty())
    {
        tmp=vec.back();//输出末尾元素
        cout<<"id "<<tmp.id<<"db "<<tmp.db<<endl;
        vec.pop_back();   //弹出末尾元素
    }
    return 0;
}
*/


/*
//函数模板的使用
//for_each() count_if()函数的使用

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct Student
{
    int id;
    double score;
};

template<class T>
void Original(T &vt)     //初始化
{
    Student temp;

    temp.id=1;
    temp.score=90;
    vt.push_back(temp);

    temp.id=2;
    temp.score=95;
    vt.push_back(temp);

    temp.id=3;
    temp.score=98;
    vt.push_back(temp);

    temp.id=4;
    temp.score=97;
    vt.push_back(temp);

    temp.id=5;
    temp.score=95;
    vt.push_back(temp);

    temp.id=6;
    temp.score=90;
    vt.push_back(temp);
}

void out(Student &stu)
{
    cout<<" stu--id: "<<stu.id<<"    "<<"stu--score: "<<stu.score<<endl;
}

bool greater95(Student &stu)
{
    if(stu.score>=95.0)
    {
        return 1;
    }
    return 0;
}

int main()
{
    vector<Student> vec;
    vector<Student>::iterator it;

    int countV=0;
    Original(vec);

    for_each(vec.begin(),vec.end(),out);
    countV=count_if(vec.begin(),vec.end(),greater95);

    cout<<"大于95分的人数:  "<<countV<<endl;

    return 0;
}
*/


/*

//find()    find_if()
#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
using namespace std;

void print(const int &temp)
{
    cout<<temp<<endl;
}

int main()
{
    const int  
    arr_size=8;
    int arr[arr_size]={0,1,2,3,4,5,6,7};

    vector<int> vec;
    vector<int>::iterator location_index;

    for(int i=0;i<8;++i)
    {
        vec.push_back(arr[i]);
    }

    for_each(vec.begin(),vec.end(),print);

    location_index = find(vec.begin(),vec.end(),2);
    cout<<"2的下标是:  "<<((location_index)-vec.begin())<<endl;

    location_index = find_if(vec.begin(),vec.end(),bind2nd(greater<int>(),5));
    cout<<"第一个大于5的数字下标为: "<<(location_index-vec.begin())<<endl;

    return 0;
}
*/

/*

//排序:sort()的使用

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;

class student
{
   public:
    student(const string &a,double b):name(a),score(b){}

    string name;
    double score;

    bool operator < (const student &m)const//小于的运算符重载函数
    {
        return score < m.score;
    }
};

bool name_sort_less(const student &m,const student &n)
{
    return m.name<n.name;
}

bool name_sort_greater(const student &m,const student &n)
{
     return m.name>n.name;
}

bool score_sort_greater(const student &m,const student &n)
{
     return m.score>n.score;
}


void print(student &s)
{
    cout<<s.name<<"\t"<<s.score<<endl;
}

void Original(vector<student> &v)
{
    student st1("Tom",74);
    v.push_back(st1);

    st1.name="Yang";
    st1.score=90;
    v.push_back(st1);

    st1.name="Lijian";
    st1.score=98;
    v.push_back(st1);

    st1.name="Eason";
    st1.score=87;
    v.push_back(st1);

    st1.name="Kkw";
    st1.score=78;
    v.push_back(st1);

    st1.name="Jony";
    st1.score=75;
    v.push_back(st1);
}

 int main()
 {
    vector<student> vec;
    Original(vec);

    cout<<"********************排序前*****************"<<endl;
    for_each(vec.begin(),vec.end(),print);

    sort(vec.begin(),vec.end());  //默认按照数字从小到大排序
    cout<<"********************排序后*****************"<<endl;
    for_each(vec.begin(),vec.end(),print);


    sort(vec.begin(),vec.end(),name_sort_less);
    cout<<"*************按name从小到大排序*************"<<endl;
    for_each(vec.begin(),vec.end(),print);


    sort(vec.begin(),vec.end(),name_sort_greater);
    cout<<"*************按name从大到小排序*************"<<endl;
    for_each(vec.begin(),vec.end(),print);

    sort(vec.begin(),vec.end(),score_sort_greater);
    cout<<"*************按score从大到小排序*************"<<endl;
    for_each(vec.begin(),vec.end(),print);

    return 0;
 }
*/


/*
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

void OutToScreen(int &Ele)
{
    cout<<Ele<<",";
}
*/

/*

//插入元素:push_back() 尾插     insert()  向任意位置插入
int main()
{
    vector<int> vec;
    for(int i=0;i<10;++i)
    {
        vec.push_back(i);
    }
    vec.insert(vec.begin(),-1);
    for_each(vec.begin(),vec.end(),OutToScreen);
    cout<<endl;

    vec.insert(vec.end(),-2);
    for_each(vec.begin(),vec.end(),OutToScreen);
    cout<<endl;

    vector<int> vt;
    vt.push_back(-80);
    vt.push_back(-90);
    vt.push_back(-70);
    vt.push_back(-50);

    vec.insert(vec.end(),vt.begin(),vt.end());
    for_each(vec.begin(),vec.end(),OutToScreen);
    cout<<endl;

    vec.insert(vec.begin(),3,0);
    for_each(vec.begin(),vec.end(),OutToScreen);
    cout<<endl;
}
*/


/*
//删除   pop_back() 删除末尾元素 
//       clear()     删除全部元素
//       erase()     删除任意位置元素
int main()
{
    vector<int> vec;
    for(int i=0;i<10;++i)
    {
        vec.push_back(i);
    }

    for_each(vec.begin(),vec.end(),OutToScreen);
    cout<<endl;
    cout<<"************从尾删除**********************"<<endl;
    while(!vec.empty())
    {
        vec.pop_back();  //弹出vector末尾元素
        for_each(vec.begin(),vec.end(),OutToScreen);
        cout<<endl;
    }
    vec.clear();//清空vector型容器


    for(int j=0;j<10;++j)
    {
        vec.push_back(j);
    }
    for_each(vec.begin(),vec.end(),OutToScreen);
    cout<<endl;

    cout<<"***********从头删除**************"<<endl;
    while(!vec.empty())
    {
        vec.erase(vec.begin());  //删除容器中第一个元素
        for_each(vec.begin(),vec.end(),OutToScreen);
        cout<<endl; 
    }

}
*/


/*
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<functional>
using namespace std;

struct ST
{
    int id;
    int score;
};

void print( ST & tmp)
{
    cout<<"id"<<tmp.id<<"  "<<"score"<<tmp.score<<endl;
}


int main()
{
    vector<ST> vec;
    ST stu;
    stu.id=1;
    stu.score=80;
    vec.push_back(stu);

    stu.id=2;
    stu.score=87;
    vec.push_back(stu);

    stu.id=3;
    stu.score=70;
    vec.push_back(stu);


    for_each(vec.begin(),vec.end(),print);


    cout<<"--------------pop_back() 删除-----------------"<<endl;
    vec.pop_back();
    for_each(vec.begin(),vec.end(),print);
    return 0;
}

*/

#if 0
//vector类模板提供了成员swap()函数,以实现两个vector型容器之间的元素互换
//如果两个参与交换的vector类型相同,交换会瞬间完成;
//如果两个参与交换的vector对象中的元素类型不同,在实现对象交换的过程中,操作将非常复杂

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

void OutPut(int &Ele)
{
    cout<<Ele<<"  ";
}


int main()
{
    vector<int> c1,c2;

    for(int i=0;i<10;++i)
    {
        c1.push_back(i);
        //c2.push_back(i*10);
    }

    for(int i=0;i<5;++i)
    {
        c2.push_back(i*10);
    }

    cout<<"c1 交换前:"<<endl;
    for_each(c1.begin(),c1.end(),OutPut);
    cout<<endl;

    cout<<"c2 交换前:"<<endl;
    for_each(c2.begin(),c2.end(),OutPut);
    cout<<endl;

    cout<<"-----------swap--------------"<<endl;
    c1.swap(c2);

    cout<<"c1 交换后:"<<endl;
    for_each(c1.begin(),c1.end(),OutPut);
    cout<<endl;

    cout<<"c1 交换后:"<<endl;
    for_each(c2.begin(),c2.end(),OutPut);
    cout<<endl;

    return 0;

}
#endif

#if 0
//vector<bool>类    vector<bool>只占用一个字节存储单个元素
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

void Iter_for(vector<bool> &vec)
{
    vector<bool>::iterator it;
    for(it=vec.begin();it!=vec.end();++it)
    {
        cout<<*it<<"  ";
    }
    cout<<endl;
}
int main()
{
    int arr[]={1,0,1,0,0,0,1,1,1};
    vector<bool> vt;

    int i=0;
    for(i=0;i<9;++i)
    {
        vt.push_back(bool (arr[i]));
    }

    Iter_for(vt);

    vt[5]=bool (1);
    Iter_for(vt);

    return 0;
}
#endif
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值