我应该如何使用新的C++11标准来编程C++
How should I approach programming C++ with the new C++11 standard in place?
我已经编程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标准中,同样的问题也适用于许多其他方面。我应该开始在代码中使用新事物,而忘记旧的做事方式吗?
这取决于项目和编译器的支持。C++11添加了许多内容,使您的程序更可读、更快、更健壮等。
C++11唯一的缺点是并非所有平台都支持它。您的项目需求可能要求支持不支持C++11的平台或编译器,或者迁移到C++11所获得的价值可能不如放弃缺乏C++11支持的编译器或平台所损失的价值大。
这不是一个要么全有要么全无的决定。您可能可以选择一些适合自己的功能,并决定将其他一些功能保留到稍后更多编译器获得更好的支持时。
不同的项目会有所不同,判断将取决于您对C++11带来的各种好处的重视程度,以及您对旧平台支持的重视程度。随着时间的推移,事情会进一步朝着有利于C++11的方向发展,直到毫无疑问,但现在你只需要看看你的项目,并决定C++11的哪些部分是否为你所接受。
相关文章:
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 编译标准库类型
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 模板元编程:如何将参数包组合成新的参数包
- 铸造标准::有没有回到原来的类型
- Qt Q串行端口未编程设备未关闭
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 谁以编程语言(例如C )制定标准
- 我应该如何使用新的C++11标准来编程C++
- 大型嵌入式公司是否"forced"使用旧的编程标准/编译器?
- 这种模板编程技术的名称是什么,这是标准的c++
- 将智能指针用作编程标准
- 编程 Arduino 与标准 C 有何不同
- 以编程方式从父进程的子进程捕获打印,因此它们不会转到标准输出