std::list 的使用

复制代码
#pragma warning(disable:4786)
#include <iostream>
#include <list>
#include <algorithm>
#include <string>
//#include <iomanip.h>

using namespace std;

template <class T>void print(const T& Ele)
{
    cout<<" "<<Ele<<";"<<endl;
}

// 格式化输出
void Print_D(double& Ele)
{
    cout.width(5);            // 宽度5
    cout.precision(1);        // 保留1位小数
    cout<<std::fixed<<Ele<<", ";
}
void Print_I(int& Ele)
{
    cout<<Ele<<",  ";
}

void main()
{
    //上定义双向队列
    list<string>mylist_string;
    list<double>mylist_double(6);
    
    //---------初始化mylist_string
    mylist_string.push_front("1:  Jack");
    mylist_string.push_front("2:  Tom");
    mylist_string.push_front("3:  Mike");

    //---------初始化mylist_double
    mylist_double.push_front(10.0);
    mylist_double.push_front(20.0);
    mylist_double.push_front(30.0);
    mylist_double.push_front(40.0);
    mylist_double.push_front(50.0);

    //下述是三种容器定义形式
    list<int> mylist_int(6,0);            // 6个0:0 0 0 0 0 0
    list<double>mylist_double2(6,0.0);    // 6个0.0:0.0 0.0 0.0 0.0 0.0 0.0
    list<int>elselist(mylist_int);        // 以其它双向队列初始化
    list<double>Iterlist(mylist_double.begin(),mylist_double.end());    // 以其他队列初始化

    //----输出各个容器中的元素
    cout<<"打印 mylist_string:"<<endl;
    list<string>::iterator iter_String;    // 迭代器
    for(iter_String=mylist_string.begin();iter_String!=mylist_string.end();iter_String++)
    {
        string temp=*iter_String;
        print(temp);
    }
    cout<<"打印 mylist_double:"<<endl;
    for_each(mylist_double.begin(),mylist_double.end(),Print_D);
    cout<<endl;


    cout<<"打印 mylist_double2:"<<endl;
    for_each(mylist_double2.begin(),mylist_double2.end(),Print_D);
    cout<<endl;

    cout<<"打印 Iterlist:"<<endl;
    for_each(Iterlist.begin(),Iterlist.end(),Print_D);
    cout<<endl;

    cout<<"打印 mylist_int:"<<endl;
    for_each(mylist_int.begin(),mylist_int.end(),Print_I);
    cout<<endl;

    cout<<"打印 elselist:"<<endl;
     for_each(elselist.begin(),elselist.end(),Print_I);
    cout<<endl;

    //各容器的容量
    int size=mylist_string.size();
    int maxsize=mylist_string.size();
    mylist_string.resize(5);

    size=mylist_double.size();
    maxsize=mylist_double.max_size();
    mylist_double.resize(5);

    size=mylist_double2.size();
    maxsize=mylist_double2.max_size();
    mylist_double2.resize(5);

    size=Iterlist.size();
    maxsize=Iterlist.max_size();
    Iterlist.resize(5);

    size=mylist_int.size();
    maxsize=mylist_int.max_size();
    mylist_int.resize(5);

    size=elselist.size();
    maxsize=elselist.max_size();
    elselist.resize(5);

    //----再次输出各个容器中的元素
    cout<<"打印 mylist_string:"<<endl;
                 for(iter_String=mylist_string.begin();iter_String!=mylist_string.end();iter_String++)
    {
        string temp=*iter_String;
        print(temp);
    }
    cout<<"打印 mylist_double:"<<endl;
    for_each(mylist_double.begin(),mylist_double.end(),Print_D);
    cout<<endl;

    cout<<"打印 mylist_double2:"<<endl;
    for_each(mylist_double2.begin(),mylist_double2.end(),Print_D);
    cout<<endl;

    cout<<"打印 Iterlist:"<<endl;
    for_each(Iterlist.begin(),Iterlist.end(),Print_D);
    cout<<endl;

    cout<<"打印 mylist_int:"<<endl;
    for_each(mylist_int.begin(),mylist_int.end(),Print_I);
    cout<<endl;

    cout<<"打印 elselist:"<<endl;
     for_each(elselist.begin(),elselist.end(),Print_I);
    cout<<endl;


    //使用迭代器相关的函数
    list<double>::iterator Iter_D;
    list<double>::reverse_iterator Iter_rD;
    cout<<"打印 mylist_double 所有元素:"<<endl;
    for_each(mylist_double.begin(),mylist_double.end(),Print_D);
    cout<<endl;

    double tmp=0.0;
    Iter_D=mylist_double.begin();
    tmp=*Iter_D;
    cout<<"打印 mylist_double 的 begin:"<<endl;
    cout<<tmp<<endl;

    Iter_rD=mylist_double.rbegin();
    tmp=*Iter_rD;
    cout<<"\r\n打印 mylist_double 的 rbegin:"<<endl;
    cout<<tmp<<endl;

     Iter_D=mylist_double.end();
    Iter_D--; // 必须--,end为指向最后一个元素所在位置后一个位置
    tmp=*Iter_D;
    cout<<"打印 mylist_double 的 end:"<<endl;
    cout<<tmp<<endl;

    Iter_rD=mylist_double.rend();
    Iter_rD--; // 必须--,rend为指向第一个元素所在位置前一个位置
    tmp=*Iter_rD;
    cout<<"打印 mylist_double 的 rend:"<<endl;
    cout<<tmp<<endl;

     tmp=mylist_double.front();
    cout<<"打印 mylist_double 的 front:"<<endl;
    cout<<tmp<<endl; //
    //cout<<mylist_double.front()<<endl;

     tmp=mylist_double.back();
    cout<<"打印 mylist_double 的 back:"<<endl;
    cout<<tmp<<endl; 
}
复制代码

 

posted on   zxddesk  阅读(49)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示