大佬教程收集整理的这篇文章主要介绍了能用STL算法,绝不自己实现!,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <iostream> // std::cout #include <algorithm> // std::for_each #include <String> // std::string #include <vector> // std::vector #include <functional> using namespace std; class Address { public: Address(String url) :url(url) {}; void display() { cout << "url:" << this->url << endl; } private: String url; }; int main() { vector<Address>adds{ Address("http://c.biancheng.net/stl/"),Address("http://c.biancheng.net/java/"),Address("http://c.biancheng.net/python/") }; //手动编写循环结构 cout << "first:\n"; for (auto it = adds.begin(); it != adds.end(); ++it) { (*it).display(); } //调用 STL 标准库中的算法函数 cout << "second:\n"; for_each(adds.begin(),adds.end(),mem_fun_ref(&Address::display)); return 0; }程序执行结果为:
first:
url:http://c.biancheng.net/stl/
url:http://c.biancheng.net/java/
url:http://c.biancheng.net/python/
second:
url:http://c.biancheng.net/stl/
url:http://c.biancheng.net/java/
url:http://c.biancheng.net/python/
for (auto it = adds.begin(); it != adds.end(); ++it) { (*it).display(); }此段代码中,每一次循环都要执行一次 end() 方法,事实上该方法并不需要多次调用,因为它的值自始至终都没有发生改变。也就是说,end() 方法只需要调用一次就够啦,for_each() 函数就对这一点进行了优化:
for_each(adds.begin(),mem_fun_ref(&Address::display));可以看到,通过将 end() 方法作为参数传入 for_each() 函数,该方法只执行了 1 次。当然,这也仅是众多优化中的一处。事实上,STL 标准库的开发者对每个算法函数的底层实现代码都多了优化,使它们的执行效率达到最高。
以上是大佬教程为你收集整理的能用STL算法,绝不自己实现!全部内容,希望文章能够帮你解决能用STL算法,绝不自己实现!所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。