我已经编程了一段时间了,我已经习惯了这样的事情:
vector<int> vi;
for (vector<int>::const_iterator it = vi.begin(); it != vi.end(); ++it) {
// do something with it
}
然而,新的C标准C 11引入了auto关键字,所以我可以编写如下内容:
vector<int> vi;
for (auto it : vi )
// do something with it
}
我应该在我的代码中开始使用它,还是应该使用迭代器方法?
同样的问题适用于新的C 11标准中的许多其他事情.我应该开始在我的代码中使用新的东西而忘记旧的做事方式吗?
最佳答案 这取决于项目和编译器支持. C 11增加了很多东西,使你的程序更具可读性,更快,更强大等等.
C 11的唯一缺点是并非所有平台都支持它.您的项目要求可能要求对不支持C 11的平台或编译器提供支持,或者通过放弃缺少C 11支持的编译器或平台而转移到C 11所获得的价值可能不如您丢失的那么多.
这不是一个全有或全无的决定.您可以选择一些适合您的功能,并决定留下其他功能,直到稍后您的编译器有更多支持.
不同的项目将有所不同,判断将取决于您对C 11带来的各种好处与您对旧平台的支持价值的重视程度.随着时间的推移,事情将进一步转向C 11,直到毫无疑问,但是现在你只需看看你的项目并决定是否可以接受C 11的哪些部分.