4

我已经编写 C++ 有一段时间了,我习惯于做以下事情:

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 标准中的许多其他事情。我是否应该开始在我的代码中使用新事物而忘记旧的做事方式?

4

1 回答 1

2

这取决于项目和编译器支持。C++11 增加了很多东西来让你的程序更易读、更快、更健壮等等。

C++11 的唯一缺点是并非所有平台都支持它。您的项目要求可能要求支持不支持 C++11 的平台或编译器,或者迁移到 C++11 所获得的价值可能不如放弃缺少 C++11 的编译器或平台所失去的价值支持。

这不是一个全有或全无的决定。您可能可以选择一些适合您的功能并决定留下一些其他功能,直到稍后您的更多编译器有更好的支持。

不同的项目会有所不同,判断将取决于你对 C++11 带来的各种好处的重视程度与对旧平台支持的重视程度。随着时间的推移,C++11 会变得更加有利,直到毫无疑问,但现在您只需要查看您的项目并决定您是否可以接受 C++11 以及哪些部分可以接受。

于 2012-07-11T21:03:35.940 回答