首页 > 其他分享 >std::optional用法

std::optional用法

时间:2024-02-03 20:11:27浏览次数:29  
标签:std float value 用法 result import optional

目的:用于处理异常值,可将异常值导出,不用设置中途退出
用法:

  1. 文件包含optional
  2. 函数返回值为std::optional<T>(注意:T&不可以,但T*可以),异常值使用std::nullopt
  3. std::optional<T>接收数据结果,.has_value()判断结果是否异常,.value()显示结果
  4. .value_or(num)可以设置异常时的默认值(个人认为比较鸡肋,设置一个普通变量完全可以达到相同效果,只是.value_or(num)意图更明显罢了
import <iostream>; 
import <optional>;
import <format>;
std::optional<float> divide(float a, float b) {
	if (b != 0) {
		return a / b;
	} else {
		return std::nullopt; 
	}
}

int main() {
	std::optional<float> result = divide(3, 1);
	float err_result = result.value_or(0);
	if (result.has_value()) {
		std::cout << std::format("result = {}\n", result.value());
		std::cout << std::format("result = {}\n", *result); // 和result.value()一样
	} else {
		std::cout << std::format("result = {}\n", err_result);
		std::cout << std::format("cannot divide by 0\n");
	}
}

标签:std,float,value,用法,result,import,optional
From: https://www.cnblogs.com/Yami-Wa/p/18005134

相关文章

  • delphi TThread.WaitFor 用法
    在Delphi中,TThread.WaitFor方法用于等待一个线程完成执行。当你创建一个线程并希望主线程(或其他线程)等待这个线程结束时,你可以使用这个方法。以下是TThread.WaitFor方法的基本用法:创建一个线程类:首先,你需要从TThread派生一个类,并重写其Execute方法。这个方法是你线程......
  • Java 8 Optional:优雅处理空指针异常的新型容器
    一、Optional概述1.1Optional定义Optional是Java8中引入的一个类,用于描述一个值不存在的情况。它可以存储任意类型的值,或者表示一个空值。使用Optional类可以避免null值的传递和检查,提高代码的健壮性和可读性。Optional类的定义如下:publicfinalclassOptional<T>{/......
  • IValueConverter的基础用法
    1、我们在做工控项目的时候通常设置配方的上下限这个时候要求OK数在上下限范围之内,否则NG首先我们绑定一个简单的List用来展示数据,我这里用学生Age来展示<ListViewItemsSource="{BindingDataList}"Margin="20"><ListView.View><GridView><Gr......
  • std::endl与"\n"区别
    使用std::endl插入到输出流中时,它不仅会在流中插入新的一行,还会强制刷新(flush)流的缓冲区。这意味着它会确保输出被立即写入到目标设备(例如终端或文件),而不是等待缓冲区被填满或显式刷新。使用'\n'字符在流中插入新行,但不会强制刷新缓冲区。这意味着如果有缓冲区,它可能会等......
  • ASP.NET Core中JsonResult和ObjectResult的用法
    ​  在ASP.NETCore中,JsonResult和ObjectResult是两种用于返回数据的ActionResult类型,它们在控制器中用来生成HTTP响应。选择使用JsonResult还是ObjectResult取决于具体需求。如只需要返回JSON格式的数据,JsonResult是一个简单且直接的选择。如果API需要支持多种响应格式,则Obje......
  • @MappedSuperclass用法,主要用于JPA基类(超类)的定义
    @MappedSuperclass 是JavaPersistenceAPI(JPA)中的一个注解,用于指示某个类是一个映射的超类(MappedSuperclass)。映射的超类类似于普通的Java类,但它不会被映射到数据库表,而是作为其他实体类的基类,用于共享字段和方法。当你在JPA中定义一个实体类的时候,可以使用 @Entity ......
  • Python中的基础数据类型:List、Tuple和Dict及其常用用法简析
    在Python编程语言中,基础数据类型是构建程序的基本元素。这些基础数据类型包括List(列表)、Tuple(元组)和Dict(字典)。每种数据类型都有其特定的用途和特性,了解并掌握它们对于编写高效、可维护的Python代码至关重要。本文将深入探讨这三种基础数据类型,并通过代码示例展示它们的常用用法。......
  • shell语句快捷用法
    bat去掉文件名字中的(1)@echooffsetlocalenabledelayedexpansionset"search=(1)"set"replace="for%%fin(*)do(set"filename=%%~nf"set"extension=%%~xf"set"newfilename=!filename:%search%=%replace%!"ren&......
  • XPath从入门到精通:基础和高级用法完整指南,附美团APP匹配示例
    XPath通常用来进行网站、XML(APP)和数据挖掘,通过元素和属性的方式来获取指定的节点,然后抓取需要的信息。学习XPath语法之前,首先了解一下一些概念。概念介绍节点之间的关系以上面的HTML节点树为例,节点之间包含了下列的关系:父节点(Parent):HTML是DIV和P节点的......
  • @bean 和@ component 区别 用法
     @bean里面没有component@Bean 和 @Component 都是 Spring 框架中用于定义和注册 bean 的注解,但它们的使用场景和方式有所不同。@Bean- @Bean 注解用在方法上,通常在配置类(带有 @Configuration 注解的类)中使用。- 它表示通过方法返回的对象应该被注册为 Spring......