对于迭代器,我看到了一些代码使用
(*iterator).first
但我想我可以使用以下
iterator->first
使用一个比另一个有什么优势?哪个更好?
使用这些语句中的任何一个都没有优势,它们都将编译为完全相同的机器代码。
然而,我会说第二个稍微清楚一点,但这只是个人喜好。
可读性。
第二个(对我来说恕我直言)更具可读性。
每当您有多个指向彼此的指针并且最后一个指向您需要的对象时,第二个(作为语法)的优点可能会被强调。那么代码p1->p2->obj
就更清楚了(*(*p1).p2).obj
。想象一下当你有 3 个或更多指针时做参考。它也是出现语法错误的理想场所。如果有人阅读了您的代码(甚至是您),那么每当您使用运算符编写代码时,您都会清楚地知道您在做什么->
。