我喜欢STL算法,而更喜欢使用算法而不是通常的循环.
几乎所有STL算法通常用作:
std::algorithm_name( container.begin(), container.end(), ..... )
container.begin(), container.end()
- 是我项目中最受欢迎的单词之一.
有没有人有同样的问题?
你是怎么解决这个问题的?
您有什么建议可以避免这种重复?我看到了几种解决方法,但它们都有不同的限制(宏使用,与通常的指针不兼容等).
下一个C++标准,C++ 0X(其中X代表,希望是9)将增加从迭代器角度到容器角度的可能性.你将能够做到例如.
的std ::排序(my_vec);
如果你不能等待,我会建议你看看:Boost.Range
如果你对迭代器/范围真的很感兴趣,我建议你阅读Andrei的" 迭代器必须去 "
许多人遇到了这种麻烦.尽管迭代器概念非常普遍,但它缺乏一些可用性.
输入'范围'概念.最好避免任何代码重复.因此,如果您在整个代码中遇到.begin()和.end(),那么最好在'iterator-getting'和实际算法之间创建一个层.
参考文献:
RangeLib
CodeProject上
...
#define ALL(x) (x).begin(), (x).end() sort(ALL(vec));