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

龙华网站建设方案咨询淄博市住房和城乡建设局网站

龙华网站建设方案咨询,淄博市住房和城乡建设局网站,免费制作音乐的软件app,成都网站制作汕头模版类std::optional管理一个可选的(optional)存储值(contained value)#xff0c;即可能存在也可能不存在的值。std::optional的一个常见用例是存储可能失败的函数的返回值。与其它方法相反(例如std::pairT, bool),std::optional可以很好地处理构造成本高昂的对象即可能存在也可能不存在的值。std::optional的一个常见用例是存储可能失败的函数的返回值。与其它方法相反(例如std::pairT, bool),std::optional可以很好地处理构造成本高昂的对象并且更具可读性因为意图被明确表达。       在任何给定时间点的std::optional的任何实例要么存储值要么不存储值。如果std::optional存储一个值则保证该值作为std::optional对象占用空间的一部分进行分配即不会发生动态内存分配。       当std::optionalT类型的对象根据上下文转换为bool时如果该对象存储一个值则转换返回true如果不存储值则转换返回false。       和std::variant、std::any一样std::optional对象有值语义其拷贝操作会被实现为深拷贝。std::optional对象也支持move语义。       std::optional模拟了一个可以为空的任意类型的实例它可以被用作成员、参数、返回值等。 std::optional提供了一种标准化的方式来表示可选值(optional value)消除了对空指针的需要并增强了代码的可读性。std::optional是使用原始指针或其它机制来表示缺失值或可选值的更安全的替代方案。根据设计std::optional强制用户在访问某个值之前显式检查该值是否存在从而最大限度地降低空指针解引用错误的风险。 std::make_optional:创建一个用参数初始化的std::optional对象。 std::nullopt是std::nullopt_t类型的常量用于指示具有未初始化(或空的)状态的std::optional类型作为std::optional对象无值时候的值.       std::optional特别适合延迟初始化问题它本身就是延迟初始化的一个实例。所存储的T可以在构造时初始化或者稍后初始化或者从不初始化。 int test_optional_init() {std::optionalint var;if (!var.has_value())std::cout var is not set\n; // var is not setvar 8; // error: *var 8, 因为var采用默认初始化为空if (var.has_value())std::cout var is present: var.value() \n; // var is present: 8if (var)std::cout var is present: *var \n; // var is present: 8std::optionalint var2{ std::nullopt }; // 将var2初始化置于empty状态if (!var2.has_value())std::cout var2 is not set\n; // var2 is not setstd::optionalstd::string var3{ China };if (var3 std::nullopt)std::cout var3 std::nullopt\n; // var3 std::nulloptauto var4 std::make_optionalstd::vectorchar*({ China, Beijing, Haidian });for (const auto v : *var4)std::cout v; // China Beijing Haidianstd::cout \n;// 内建类型可不需指明存储类型,deduction guidestd::optional var5{ 2 }; std::cout var5: var5.value() \n; // var5: 2std::optional var6{ std::string{China} };std::cout var6: var6.value() \n; // var6: Chinareturn 0; } std::optional成员函数:       1.访问存储值       (1).var.value():返回引用如果没有值会抛出std::bad_optional_access异常       (2).*var:如果没有值会crash(or undefined behavior)返回存储值的引用应该只用于已经确定含有值的场景       (3).var.value_or返回值注意与value()的区别如果没有值则获取备选值       (4).var-返回存储值的指针可访问内部值的成员       2.emplace:赋予一个新值(in-place)如果在调用之前已经存储一个值则通过调用其析构函数来销毁所存储的值       3.reset:如果存储一个值则销毁该值否则没有任何影响       4.has_value:返回std::optional对象是否存有值       5.operator bool()返回std::optional对象是否存有值       6.swap:交换两个std::optional对象的值       非成员函数比较std::optional对象operator, !, , , , , 。比较std::optional对象时empty值即std::nullopt比任何有值的std::optional对象都要小。       std::bad_optional_access是一个异常类直接派生自std::exception,用于处理在访问std::optional对象时发生的错误当尝试访问一个没有存储值的std::optional对象时会抛出std::bad_optional_access异常。 int test_optional_member_functions() {// 获取std::optional值: var.value(), *var, var.value_or, var-std::optionalint var{ 8 };std::cout var: var.value() , *var \n; // var: 8, 8*var 6; std::cout var: *var \n; // var: 6var 8; std::cout var: *var \n; // var: 8*var 10; std::cout var: var.value_or(66) \n; // var: 10var.reset(); std::cout var: var.value_or(66) \n; // var: 66std::optionalstd::string var2{ China };std::cout var2: var2-data() \n; // var2: Chinavar.reset(); // or: var {};try {std::cout var: var.value() \n;//std::cout var: *var \n; // 直接crash掉}catch (const std::bad_optional_access e) {std::cout exception: e.what() \n; // var: exception: Bad optional access}std::string str{ Beijing }; // 不要对常量变量使用std::movestd::optionalstd::string var3(std::move(str));std::cout var3: var3.value() , str: str \n; // var3: Beijing, str:var3.emplace(Haidian);std::cout var3: var3.value() \n; // var3: Haidianif (var3.has_value())std::cout var3 has value\n; // var3 has valueif (var3)std::cout var3 has value\n; // var3 has valuestd::cout var2: var2.value() , var3: var3.value() \n; // var2: China, var3: Haidianvar2.swap(var3);std::cout var2: var2.value() , var3: var3.value() \n; // var2: Haidian, var3: Chinaif (var2 ! var3)std::cout var2 ! var3\n; // var2 ! var3return 0; } 执行结果如下图所示 GitHubhttps://github.com/fengbingchun/Messy_Test
http://www.w-s-a.com/news/118986/

相关文章:

  • 网站建设发言材料个人网站推广软件
  • php建站软件哪个好南京哪家做网站好
  • 排名好的手机网站建设番禺网站建设专家
  • 番禺怎么读百度有专做优化的没
  • 网站开发中应注意哪些问题网络营销的主要特点
  • 网站定制案例北京网站制作招聘网
  • 网站建设与推广实训小结网站建设专业英文
  • 郑州网站建设动态凡科网站建设是免费的吗
  • 湖北手机网站建设wordpress转emlog博客
  • 北京东站设计网名的花样符号
  • 安徽建设厅网站首页网站开发aichengkeji
  • 自贡网站制作荣茂网站建设
  • 什么做的网站吗正规的机械外包加工订单网
  • 网络工程公司的业务邵阳seo快速排名
  • 博主怎么赚钱网站seo找准隐迅推
  • 营销号经典废话北京网站建设公司网站优化资讯
  • 一六八互联网站建设怎么做套版网站
  • wordpress 书站建筑公司简介范文大全
  • 建设官方网站多少鲜花网站建设的主要工作流程
  • 卖主机网站轻量wordpress主题
  • 网站建设规划书结构制作一个自己的网站
  • 外贸网站商城建设做网站和推广
  • 网站建设微信群免费简约ppt模板
  • 哈尔滨网站设计公司哪家更好shopify和wordpress
  • 岚县网站建设网站建设中效果
  • 网站建设软文推广网站建设分金手指排名十四
  • 网站建设要什么知识广州注册公司地址怎么解决
  • 自己可以做开奖网站吗wordpress和hexo
  • 成都网站关键词优化wordpress价格
  • 网站开发后端站建设 app开发网站