Item1: vector的使用 JG问题:void f(vector<int>& v) { v[0] = 1; // A v[1] = 2; // B}GURU问题:
以上代码有诸如以下的建议:1> 尽量使用const.未修改v中的内容,可使用const_iterator;2> 尽量使用!=而不用<来比较迭代器。 != 对任何迭代器都有效,而< 只对随机访问迭代器有效。list不支持<;3> 尽量使用++前缀,而非后缀。可以从++前后缀的实现代码中得知,除非一些特殊场合;4> 避免无谓的重复求值。v.end()函数在重复求值,而整个循环期间都未改变。除非end()被编译器进行内联,无调用开销,最好是将其提到循环外面;5> 尽量使用'\n'而非endl。原因在于endl会迫使输出流刷新其内部缓冲区,可以在整个循环之后写一个刷新语句。6> 尽量使用标准库中算法. 如copy()、for_each()。例如这里就可以这样写:copy(v.begin(), v.end(), ostream_iterator<int>(cout, '\n'));这样一来也避免了1> ~ 5的麻烦。
// zero
posted on 2006-10-14 15:05 Zero Lee 阅读(3232) 评论(0) 编辑 收藏 引用 所属分类: C++ Performance
Powered by: C++博客 Copyright © Zero Lee