第13章 图 深度优先和广度优先

大家好,今天给各位分享100万条数据遍历,lambda会比for循环快吗的一些知识,其中也会对inline函数不建议有循环进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

本文目录

  1. 如何规范地使用C++内联函数
  2. 100万条数据遍历,lambda会比for循环快吗

如何规范地使用C++内联函数

1.一个较为合理的经验准则是,不要内联超过10行的函数.

2.不要将析构函数定义为内联函数(即使不加inline)谨慎对待析构函数,析构函数往往比其表面看起来要更长,因为有隐含的成员和基类析构函数被调用!

3.另一个实用的经验准则:内联那些包含循环或语句的函数常常是得不偿失(除非在大多数情况下,这些循环或语句从不被执行).

4.递归函数不应该声明成内联函数.

5.虚函数和递归函数就不会被正常内联.

在moreeffectivec++中提到:inlined意味着编译期间将被调用的内联函数展开,无法知道哪个函数该被调用的时候,编译器无法将该函数加以inlining,虚函数大部分情况都是通过指向父类的指针或引用加以调用,此类行为无法被inlined

100万条数据遍历,lambda会比for循环快吗

这个得看情况来分析。

lambda表达式中有一种流叫parallelSteam,这叫并行流。相对stream流来讲,对流的处理是并行处理,所以效率上肯定比单纯的for循环。不过并行流有个缺陷,就是易产生并发安全问题。所以这玩意还是慎用。

当然,stream流也有自己的优势,假如你有多个处理操作,比如过滤某个集合中特定条件的元素后将其进行转化后再遍历输出,此时涉及多个操作,如果用传统的for循环来做,则不如stream效率高。因为它封装了对集合进行操作的算法和方法,是从底层进行处理。如果只是一个遍历操作,两者效率上差别不是很大。

更关键的是,使用stream流可以使代码更简洁,虽然对老程序员不是很友好,但是你只要花点时间研究研究,你就会喜欢上这种写法。

好了,文章到此结束,希望可以帮助到大家。

数据结构 图的基本操作以及遍历