C++11:基于范围的的for循环、静态断言
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++11:基于范围的的for循环、静态断言,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2005字,纯文字阅读大概需要3分钟。
内容图文
![C++11:基于范围的的for循环、静态断言](/upload/InfoBanner/zyjiaocheng/613/23eda7f87ff7494dac3e01911b801664.jpg)
C++11:基于范围的for循环、静态断言
C++11标准为C++编程语言的第三个官方标准,正式名叫ISO/IEC 14882:2011 - Information technology -- Programming languages -- C++。在正式标准发布前,原名C++0x。它将取代C++标准第二版ISO/IEC 14882:2003 - Programming languages -- C++成为C++语言新标准。
C++11是对目前C++语言的扩展和修正, C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL) ,并入了大部分的C++ Technical Report 1(TR1) 程序库(数学的特殊函数除外)。
C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、 decltype,和模板的大量改进。
基于范围的for循环
在C++中for循环可以使用基于范围的for循环,示例代码如下:
int a[] = { 1, 2, 3, 4, 5 };
int n = sizeof(a) / sizeof(*a); //元素个数
for (int i = 0; i < n; ++i)
{
int tmp = a[i];
cout << tmp << ", ";
}
cout << endl;
for (int tmp : a)
{
cout << tmp << ", ";
}
cout << endl;
for (int i = 0; i < n; ++i)
{
int &tmp = a[i];
tmp = 2 * tmp;
cout << tmp << ", ";
}
cout << endl;
for (int &tmp : a)
{
tmp = 2 * tmp;
cout << tmp << ", ";
}
cout << endl;
使用基于范围的for循环,其for循环迭代的范围必须是可确定的:
int func(int a[])//形参中数组是指针变量,无法确定元素个数
{
for(auto e: a) // err, 编译失败
{
cout << e;
}
}
int main()
{
int a[] = {1, 2, 3, 4, 5};
func(a);
return 0;
}
静态断言
C/C++提供了调试工具assert,这是一个宏,用于在运行阶段对断言进行检查,如果条件为真,执行程序,否则调用abort()。
int main()
{
bool flag = false;
//如果条件为真,程序正常执行,如果为假,终止程序,提示错误
assert(flag == true); //#include <cassert>或#include <assert.h>
cout << "Hello World!" << endl;
return 0;
}
C++ 11新增了关键字static_assert,可用于在编译阶段对断言进行测试。
静态断言的好处:
- 更早的报告错误,我们知道构建是早于运行的,更早的错误报告意味着开发成本的降低
- 减少运行时开销,静态断言是编译期检测的,减少了运行时开销
语法如下:
static_assert(常量表达式,提示字符串)
注意:只能是常量表达式,不能是变量12
int main()
{
//该static_assert用来确保编译仅在32位的平台上进行,不支持64位的平台
static_assert( sizeof(void *)== 4, "64-bit code generation is not supported.");
cout << "Hello World!" << endl;
return 0;
}
内容总结
以上是互联网集市为您收集整理的C++11:基于范围的的for循环、静态断言全部内容,希望文章能够帮你解决C++11:基于范围的的for循环、静态断言所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。