<分区>
我在 std::for_each
、bind
等方面使用了很多 STL
代码,但我注意到有时 STL
用法不是个好主意。
例如,如果您有一个 std::vector
并且想对 vector 的每个项目执行一个操作,您的第一个想法是使用它:
std::for_each(vec.begin(), vec.end(), Foo())
又优雅又ok,有一段时间了。但是随后出现第一组错误报告,您必须修改代码。现在你应该添加参数来调用 Foo()
,所以现在它变成了:
std::for_each(vec.begin(), vec.end(), std::bind2nd(Foo(), X))
但这只是临时解决方案。现在项目日趋成熟,您对业务逻辑的理解也更好了,您希望对代码进行新的修改。正是在这一点上,你意识到你应该使用旧的好:
for(std::vector::iterator it = vec.begin(); it != vec.end(); ++it)
这是否只发生在我身上?您在代码中识别出这种模式吗?您在使用 STL
时遇到过类似的反模式吗?