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

快手点赞购买网站爱名网22自助网站建设

快手点赞购买网站,爱名网22自助网站建设,中咨工程建设监理公司网站,室内设计师招聘简章请问C11有哪些新特性#xff1f; auto关键字#xff1a;编译器可以根据初始值自动推导出类型。但是不能用于函数传参以及数组类型的推导nullptr关键字#xff1a;nullptr是一种特殊类型的字面值#xff0c;它可以被转换成任意其它的指针类型#xff1b;而NULL一般被宏定义…请问C11有哪些新特性 auto关键字编译器可以根据初始值自动推导出类型。但是不能用于函数传参以及数组类型的推导nullptr关键字nullptr是一种特殊类型的字面值它可以被转换成任意其它的指针类型而NULL一般被宏定义为0在遇到重载时可能会出现问题。智能指针C11新增了std::shared_ptr、std::weak_ptr等类型的智能指针用于解决内存管理的问题。初始化列表使用初始化列表来对类进行初始化右值引用基于右值引用可以实现移动语义和完美转发消除两个对象交互时不必要的对象拷贝节省运算存储资源提高效率atomic原子操作用于多线程资源互斥操作新增STL容器array以及tuple请你详细介绍一下C11中的可变参数模板、右值引用和lambda这几个新特性。 可变参数模板 C11的可变参数模板对参数进行了高度泛化可以表示任意数目、任意类型的参数其语法为在class或typename后面带上省略号”。 例如 Templateclass ... T void func(T ... args) { cout”num is”sizeof ...(args)endl; } func();//args不含任何参数func(1);//args包含一个int类型的实参func(1,2.0)//args包含一个int一个double类型的实参其中T叫做模板参数包args叫做函数参数包 省略号作用如下 1声明一个包含0到任意个模板参数的参数包2在模板定义得右边可以将参数包展成一个个独立的参数C11可以使用递归函数的方式展开参数包获得可变参数的每个值。通过递归函数展开参数包需要提供一个参数包展开的函数和一个递归终止函数。例如 #include using namespace std;// 最终递归函数void print() { cout empty endl; }// 展开函数 template void print(T head, Args... args) { cout head ,; print(args...); } int main() { print(1, 2, 3, 4); return 0; } 参数包Args ...在展开的过程中递归调用自己每调用一次参数包中的参数就会少一个直到所有参数都展开为止。当没有参数时就会调用非模板函数printf终止递归过程。 补充 模板简单学习C 模板 #include iostream #include vectortemplate class T class Stack{ private:std::vectorT elements;//元素 public:void push(T const);//入栈void pop();//出栈T top() const;//返回栈顶元素bool empty() const{//如果为空返回真return elements.empty();} };templateclass T void StackT::push(const T elem) {//追加元素的副本elements.template emplace_back(elem); } templateclass T void StackT::pop() {if (elements.empty()){throw std::out_of_range(Stack::pop():empty stack);}//删除元素elements.pop_back(); }template class T T StackT::top() const {if (elements.empty()){throw std::out_of_range(Stack::top():empty stack);}//返回第一个元素的副本return elements.back(); }int main(int argc,char* argv[]) {try {Stackint int_stack{};Stackstd::string string_stack{};//操作 int 类型的栈int_stack.push(7);std::cout int_stack.top() std::endl;//操作 string 类型的栈string_stack.push(hello);std::cout string_stack.top() std::endl;string_stack.pop();string_stack.pop();} catch (std::exception constex) {std::cerr Exception: ex.what() std::endl;return -1;}return 0; }右值引用: C中左值通常指可以取地址有名字的值就是左值而不能取地址没有名字的就是右值。而在指C11中右值是由两个概念构成将亡值和纯右值。纯右值是用于识别临时变量和一些不跟对象关联的值比如13产生的临时变量值2、true等而将亡值通常是指具有转移语义的对象比如返回右值引用T的函数返回值等。C11中右值引用就是对一个右值进行引用的类型。由于右值通常不具有名字所以我们一般只能通过右值表达式获得其引用基于右值引用可以实现转移语义和完美转发新特性。参见原文 Lambda表达式 Lambda表达式定义一个匿名函数并且可以捕获一定范围内的变量其定义如下[capture](params)mutable-return-type{statement}[capture]捕获列表捕获上下文变量以供lambda使用。同时[]是lambda寅初复编译器根据该符号来判断接下来代码是否是lambda函数。(Params)参数列表与普通函数的参数列表一致如果不需要传递参数则可以连通括号一起省略。mutable是修饰符默认情况下lambda函数总是一个const函数Mutable可以取消其常量性。在使用该修饰符时参数列表不可省略。-return-type:返回类型是返回值类型{statement}:函数体内容与普通函数一样除了可以使用参数之外还可以使用所捕获的变量。Lambda表达式与普通函数最大的区别就是其可以通过捕获列表访问一些上下文中的数据。其形式如下:Lambda的类型被定义为“闭包”的类其通常用于STL库中在某些场景下可用于简化仿函数的使用同时Lambda作为局部函数也会提高复杂代码的开发加速轻松在函数内重用代码无须费心设计接口。
http://www.pierceye.com/news/380638/

相关文章:

  • 网站上传大马后怎么做宁波seo推广公司电话
  • 长沙建网站培训机构织梦网站采集侠怎么做
  • 行政事业单位网站建设动漫设计与制作大学
  • 网站链接推广工具建立网站平台
  • 做网站需要学什么软件做网站智能工具
  • 成品网站代理上海的建设项目招投标在哪个网站
  • 阿里云的网站建设花钱么广州市建设职业培训学校网站
  • 网站建设和前端开发的区别哈尔滨网站制作方案
  • 改进网站的建议网易邮箱网页版
  • 南宁市做网站的公司新浪云能用wordpress
  • 网站建设品牌有哪些重庆seo排名收费
  • 发优惠券网站怎么做大连开发区做网站
  • 烟台免费网站建设宝应网站开发
  • 用网站做淘宝客的人多吗3liang 设计网站 源码
  • 实训小结网站建设国内外最新新闻
  • 最新网站排名优化方法云龙徐州网站开发
  • 扬州做网站多少钱免费拿货的代理商
  • html做校园网站服装设计图片
  • 做三网站推广一般给多少钱
  • 网站关键词的写法牛肉煲的做法
  • 网站权限怎么设置吉林电商网站建设报价
  • wordpress修改站点名wordpress 插件 调用
  • vs2015做的网站广东省白云区属于哪个市
  • 微信群投票网站怎么做佳木斯做网站公司
  • 建设网站用哪个主机好阳西哪里有做网站
  • 沈阳市有做网站的公司中文企业网站html模板
  • 破解织梦做的网站有什么页游传奇平台好
  • 临安网站开发网站建设做什么费用
  • 辽宁建设工程信息网网站python 网站开发
  • 企业网站.net免费做ppt的网站