关于effective c++中条约20的一些疑惑
关于effective c++中条款20的一些疑惑
Effective C++条款20:宁以pass-by-reference-to-const替换pass-by-value。
对于以下的说法不甚了解:对于STL的迭代器和函数对象,用传值的比传址适合。
为什么这么说呢?
求解答!
谢谢!
------解决方案--------------------
迭代器传入函数中是要使用的,使用的方式无非有两种
1、用迭代器直接取值,这时候传个常量引用进去也没什么不可,挺好的。但这种用法是少数
2、用迭代器遍历,是常用的。如果传个常量指针或引用进去,将丧失遍历的能力。如果传个引用或指针进去,可以遍历,但是会改变外部迭代器的值,一般情况下是没这种需求的。所以不如传值进去,复制一个迭代器,内部可以用,又不影响外部,这是常见情况。
将迭代器传入函数并让函数改变迭代器的值也是有的,但是不常见。
Effective C++条款20:宁以pass-by-reference-to-const替换pass-by-value。
对于以下的说法不甚了解:对于STL的迭代器和函数对象,用传值的比传址适合。
为什么这么说呢?
求解答!
谢谢!
------解决方案--------------------
迭代器传入函数中是要使用的,使用的方式无非有两种
1、用迭代器直接取值,这时候传个常量引用进去也没什么不可,挺好的。但这种用法是少数
2、用迭代器遍历,是常用的。如果传个常量指针或引用进去,将丧失遍历的能力。如果传个引用或指针进去,可以遍历,但是会改变外部迭代器的值,一般情况下是没这种需求的。所以不如传值进去,复制一个迭代器,内部可以用,又不影响外部,这是常见情况。
将迭代器传入函数并让函数改变迭代器的值也是有的,但是不常见。