当前位置: 首页 > news >正文

上海建设局官方网站适合30岁女人的培训班

上海建设局官方网站,适合30岁女人的培训班,google play,网站模板html1. 关键字和语法 1.1 nullptr 空指针,能够和整数0进行区别,因为#define NULL 0 1.2 类中非静态成员变量定义时初始化 & 初始化列表 1.3 auto 可推导出右值类型,从而得知左边变量类型。 简单使用示例: auto func() {retur…

1. 关键字和语法

1.1 nullptr

空指针,能够和整数0进行区别,因为#define NULL 0


1.2 类中非静态成员变量定义时初始化 & 初始化列表


1.3 auto

可推导出右值类型,从而得知左边变量类型。

简单使用示例:

auto func() {return 3.33;
}struct Test {int a;double c;
};void test() {auto a = 1;auto b = func();cout << b << endl;Test t1 = { 2,2.111 };auto t2 = t1;cout << typeid(t2).name() << endl;  // struct Test}

 注意:

(a)auto定义变量必须初始化,如下用法错误;

auto a;
a = 10;

 (b)auto不能定义自定义类型的成员变量,如下用法错误;

struct Test {int a;auto b = 10;
}

(c)auto不能定义数组,如下用法错误; 

auto b[3] = { 1,2,3 };

(d) auto不能作为模板实例化类型,如下用法错误; 

vector<auto> v = { 1, 2, 3 };

1.4 decltype

获取变量的类型。

简单使用示例:

auto c = 3.3;
decltype(c) d = 9.9;
cout << typeid(d).name() << endl;  // double
cout << d << endl; // 9.9/*获取枚举类型*/
enum { OK, ERROR } flag;
decltype(flag) flag2;

类型追踪:

结合模板和auto使用。

template<typename T1, typename T2>
auto add(const T1&& a, const T2&& b)->decltype(a + b) {  // 推导出(a+b)类型return a + b;
}void test01() {auto ret1 = add(1, 1.01);cout << typeid(ret1).name() << endl; // doubleauto ret2 = add(1, 2);cout << typeid(ret2).name() << endl; // int
}

1.5 基于范围的for循环

可遍历数组、容器等,底层为指针或迭代器实现。

for(Type val : container) {cout << val << endl;
}

注意:

范围需确定,否则无法使用,如下用法错误:

void func(int a[]) {for(int& tmp:a) {cout << tmp << endl;}
}

1.6 静态断言

断言:运行时检查条件,为真则继续执行,否则终止程序,提示错误。如下:

#include<cassert>void test04() {bool flag = false;assert(flag == true);cout << "Hello!" << endl; // 不执行
}

运行结果:

 静态断言:编译时检查条件。

用法:

static_assert(常量表达式条件, "提示字符串");

例如:

void test05() {static_assert(sizeof(void*) == 4, "64位!"); // 静态断言失败cout << "Hello" << endl;
}

1.7 noexcept修饰符

声明一个函数不会抛出异常,帮助编译器优化代码,使用方式如下:

void test06() noexcept {...
}

1.8  模板的默认参数

如下:

/*普通函数  一默到底*/
void test07(int a, int b = 3, int c = 5) {}/*类模板  一默到底*/
template<typename T1, typename T2 = double>
class A {};/*类模板  无限制*/
template<typename T1 = int, typename T2, typename T3>
auto test08(T1 a, T2 b, T3 c)->decltype(a + b + c) {return a + b + c;
}

1.9 可变参模板

typename... A

(1)可变参模板函数递归方式展开参数包

void debug() { // 递归终止函数示例cout << "调用结束.\n" << endl;
}template<typename T1, typename...T2>
void debug(T1 first, T2...args) {cout << first << endl;// 递归调用debug(args...);
}void test07() {debug(1, "ABC", 3.14159);
}

 运行结果:

(2)可变参模板非递归方式展开参数包

template<typename T>
void print(T tmp) {cout << tmp << endl;
}template<typename...T>
void expand(T...args) {// 逗号运算符// 初始化列表int a[] = { (print(args),0)... };
}void test08() {expand(1, 2, 3, 4);
}

运行结果:

 

(3)模板类继承方式展开参数包

待补充.


1.10 右值引用

省去内存开辟、拷贝构造等。包括move移动语义函数、forward类型完美转发。

 


2. 绑定器和函数对象

bind、function、Lambda表达式


3. 智能指针

shared_ptr、weak_ptr


4. 容器

set、map:红黑树,数据有序,O(logn);

unordered_set、unordered_map:哈希表,不要求数据有序,O(1);

array:不可扩容数组;

forward_list:前向链表;list:双向链表。


5. 语言级别的线程库

使得多线程程序可更好地跨平台。

thread、mutex、condition_variable

lock_guard、unique_lock

atomic原子类型

sleep_for

底层封装的仍是Windows、Linux的线程API,例如Linux下可使用strace ./a.out跟踪程序的调用。

http://www.dinnco.com/news/18182.html

相关文章:

  • 青岛慧思网站建设网站推广方法
  • 网站副标题wordpress微信广告投放推广平台
  • 做返利网站如何操作流程磁力猫torrentkitty官网
  • 网站维护怎么做今日足球最新预测比分
  • 做网站什么空间比较好经典软文文案
  • 东阿网站制作新闻稿
  • 怎么查网站的空间商营销网站建设方案
  • 网站建设哪家公司便宜冯耀宗seo
  • 广州市住房与城乡建设网站如何进行新产品的推广
  • 快速做网站软件软文范例大全100字
  • 做翻译网站 知乎如何优化网页加载速度
  • 做网站宽度和长度布局软文广告发布平台
  • 可以做批发的跨境电商网站平台图片识别 在线识图
  • 百度蜘蛛池自动收录seo信息流优化师培训机构
  • 东莞市凤岗建设局网站做引流的公司是正规的吗
  • 零售网站建设中关村在线app
  • 网页设计个人seo推广平台
  • 政府网站栏目建设哪个平台做推广效果好
  • 可以做展示页面的网站搜索引擎网站入口
  • 汉字域名的网站东莞seo关键词
  • 免费做淘宝客网站百度网页版浏览器
  • 英文书 影印版 网站开发竞价排名的定义
  • 国务院办公厅关于加强政府网站信息内容建设的意见 首次千锋教育
  • 专业微网站建设公司首选公司哪家好中国腾讯和联通
  • 手机网站建站教程嘉兴seo计费管理
  • 网站建设在哪里办公页优化软件
  • 珠海营销型网站建设湖南竞价优化专业公司
  • 国外开源网站建设软件新品上市怎么推广词
  • 破解网站后台密码营销图片大全
  • 国外字体设计网站培训推广 seo