容器之 LIST

STL就是Standard Template Library,标准模板库。是一些“容器”的集合,这些“容器”有list,vector,set,map等。

STL iterator就是容器中指向对象的指针。STL的算法使用iterator在容器上进行操作。Iterator设置算法的边界 ,容器的长度,和其他一些事情。

你可以通过调用容器的成员函数begin()来得到一个指向一个容器起始位置的iterator。你可以调用一个容器的 end() 函数来得到过去的最后一个值。

接下来几篇我会说下 LIST,MAP的用法。

【1】定义 list

#include <list> //头文件必须加
#include <string>
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
    list<string>demo;
    return 0;
}

【2】list 的几个函数使用

首先往list增加数据。可以使用 push_back 和 push_front 两种方法增加数据,也可以使用 pop_back 和 pop_front 两种方法移出数据。

可以通过 iterator 来输出,也可以调用方法输出,给出一个demo

void prints(string str)
{
    cout<<str;
}
int main(int argc, const char * argv[]) {
    list<string>demo;
    demo.push_back("hu");//插到最后
    demo.push_back("dong");
    demo.push_front("am");//插到最前面
    demo.push_front("i");
    list<string>::iterator iterator;
    //第一种输出方式,使用 iterator 输出
    for (iterator=demo.begin(); iterator!=demo.end(); iterator++)
    {
        cout<<*iterator;
    }
    //第二种输出方式
    for_each(demo.begin(), demo.end(), prints);
    
    demo.pop_back();//移出最后一个也就是 dong
    demo.pop_front();//移出最前面的,也就是 i
    demo.empty();//判断是否为空,返回值为 bool
    return 0;
}

【3】条件判断

这个主要判断元素属性,当然可以使用 iterator在 for 循环里面逐个判断,但是里面已经给了方法

比如像这个 demo

bool isten(int str)
{
    return str==10;
}
void scorefun()//分数演示
{
    list<int>scores;
    scores.push_back(10);
    scores.push_back(20);
    scores.push_back(30);
    scores.push_back(40);
    scores.push_back(10);
    scores.push_back(10);
    scores.push_back(30);
    scores.push_back(40);
    //计算有几个10
    cout<<count(scores.begin(), scores.end(), 10)<<endl;
    //通过条件判断
    cout<<count_if(scores.begin(), scores.end(), isten);
}
int main(int argc, const char * argv[]) {
       scorefun();
}

【4】这里给一个 demo 下载

GitHub下载地址:https://github.com/DamonHu/HudongListDemo

GitOsc下载地址:http://git.oschina.net/DamonHoo/HudongListDemo

Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment