STL学习系列之二:标准模板库(STL)介绍
ot;); SalesRecords.push_back("0003 Toothbrush"); SalesRecords.push_back("0004 Toothpaste"); SalesRecords.push_back("0003 Toothbrush"); string VariableToothbrushCode("0003"); int NumberOfToothbrushes(0); NumberOfToothbrushes=count_if (SalesRecords.begin(), SalesRecords.end(), IsAToothbrush(VariableToothbrushCode)); cout << "There were " << NumberOfToothbrushes << " toothbrushes matching code " << VariableToothbrushCode << " sold" << endl; } 程序的输出是: There were 2 toothbrushes matching code 0003 sold 这个例子演示了如何向函数对象传递信息。你可以定义任意你想要的构造函数,你可以在函数对象中做任何你 想做的处理,都可以合法编译通过。 你可以看到函数对象真的扩展了基本记数算法。 到现在为止,我们都学习了: 定义一个list 向list中加入元素 如何知道list是否为空 如何使用for循环来遍历一个list 如何使用STL的通用算法for_each来遍历list list成员函数begin() 和 end() 以及它们的意义 iterator范围的概念和一个范围的最后一个位置实际上并不被处理这一事实 如何使用STL通用算法count()和count_if()来对一个list中的对象记数 如何定义一个函数对象 我选用这些例子来演示list的一般操作。如果你懂了这些基本原理,你就可以毫无疑问的使用STL了 建议你作一些练习。我们现在用一些更加复杂的操作来扩展我们的知识,包括list成员函数和STL通用算法。 8 使用STL通用算法find()在list中查找对象 我们如何在list中查找东西呢?STL的通用算法find()和find_if()可以做这些。就象for_each(), count(), count_if() 一样,这些算法也使用iterator范围,这个范围指出一个list或任意 其他容器中的一部分来处理。通常首iterator指着开始的位置,次iterator指着停止处理的地方。由次iterator指出的元素不被处理。这是find()如何工作:
输出是: Pineapple 如果没有找到指出的对象,就会返回Fruit.end()的值,要是找到了就返回一个指着找到的对象的iterator 9 使用STL通用算法find_if()在list中搜索对象 这是find()的一个更强大的版本。这个例子演示了find_if(),它接收一个函数对象的参数作为参数, 并使用它来做更复杂的评价对象是否和给出的查找条件相付。假设我们的list中有一些按年代排列的包含了事件和日期的记录。我们希望找出发生在1997年的事件。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |