对于in或for_each,哪个更可取
Which is preferable for each, in or for_each?
使用Visual Studio时,我可以至少通过以下三种方式编写容器遍历。哪种方式更可取?假设:
vector<CString> strings1;
方法1(使用具有lambda:的for_each
算法
for_each(strings1.begin(), strings1.end(), [](CString s){
_tprintf(_T("%s"), s);
}
方法2(使用for each, in
,特定于微软):
for each(auto s in strings1)
{
_tprintf(_T("%s"), s);
}
方法3(用数组语法处理向量):
for (int i=0; i<v.size(); ++i)
{
_tprintf(_T("%s"), v[i]);
}
我知道方法2是不可移植的,但我不在乎它是可移植的。这只需要在Windows中工作。
在C++11中,您可以使用基于范围的方法,这与方法2类似,但却是标准的。
http://www2.research.att.com/~bs/C++0xFAQ.html#用于
正如Stephan T.Lavavej几天前在"GoingNative 2012"会议上指出的那样,基于"官方"范围的for loop将成为即将发布的新Visual Studio测试版的一部分。因此,这将是前进的道路:
for(auto s : strings1)
{
_tprintf(_T("%s"), s);
}
或者使用一个参考来减少按值使用的复制工作量:
for (auto &s : strings1) ....
编辑:上面提到的GoingNative谈话可以在这里找到
虽然我认为第二个选项的语法更清晰,但我个人更喜欢避免它,因为它基于标准草案的早期版本,因此在未来可能会发生变化。YMMV,因为这主要是一个品味问题。
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- C++ "Count the number of collisions at each slot in the hash table"