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
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/134.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!