首页 > 编程语言 >【C++基础知识——std::visit函数理解】

【C++基础知识——std::visit函数理解】

时间:2024-09-22 17:22:34浏览次数:11  
标签:std 存储 visit variant C++ arg 表达式

1. std::visit函数的定义

std::visit通常用于访问 std::variant 类型的对象。std::variant 是 C++17 引入的一种类型安全的联合体,可以存储多个类型中的一个。visit 函数允许你通过一个访问者(visitor)来访问 std::variant 中存储的值,而不需要显式地检查存储的类型。

2. 示例

#include <variant>
 #include <iostream>

 std::variant<int, std::string> var = 42;

 std::visit([](auto&& arg) {
     std::cout << arg << std::endl;
 }, var);

3. 解释:

  • std::variantstd::variant<int, std::string> var = 42; 定义一个 std::variant 对象 var,它可以存储 int 或 std::string 类型的值。这里初始化为 42。
  • std::visit:std::visit 接受一个访问者(visitor)和一个或多个 std::variant 对象。访问者是一个可调用对象(如 lambda 表达式),它定义了如何处理 std::variant 中存储的值。
  • Lambda 表达式[](auto&& arg) { std::cout << arg << std::endl; },这是一个泛型 lambda 表达式,它接受一个参数 arg,并将其输出到标准输出。auto&& 使得 lambda 表达式可以接受任何类型的参数。

标签:std,存储,visit,variant,C++,arg,表达式
From: https://blog.csdn.net/XWWW668899/article/details/142436850

相关文章

  • C++类和对象(中),重点之重点,类和对象的掌握就看这一节了!
    [前言] 类中有六大默认成员函数,默认成员函数就是用户不显示实现,编译器也会自动生成的成员函数。目录[前言] 一、构造函数二、析构函数三、拷贝构造函数四、赋值运算符重载五、取地址运算符重载一、构造函数构造函数虽然叫构造,但是它并不是开空间创建对象,而是在对......
  • 【C++】二叉搜索树的底层以及实现
    个人主页文章目录⭐一、二叉搜索树的概念......
  • C++速通LeetCode中等第10题-轮转数组(四种方法)
    方法一:巧用deque双向队列容器classSolution{public:voidrotate(vector<int>&nums,intk){deque<int>q;inttmp;if(nums.size()>1){for(autonum:nums)q.push_back(num);......
  • MySQL 用户、权限管理,C/C++连接与使用
    目录用户用户管理查询所有用户查看当前用户查看当前连接数创建用户删除用户修改密码规则查看规则/策略规则说明临时设置持久设置修改密码权限数据库提供的权限列表查看权限给用户授权回收用户权限使用C语言连接库的安装CAPImysql_initmysql_real_connectmysql_closemysql_querym......
  • C++自助洗衣店-计算机毕业设计源码35120
    目 录摘要1绪论1.1选题背景与意义1.2研究现状1.3论文结构与章节安排2 自助洗衣店管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3 系......
  • C++容器list底层迭代器的实现逻辑~list相关函数模拟实现
    目录1.两个基本的结构体搭建2.实现push_back函数3.关于list现状的分析(对于我们如何实现这个迭代器很重要)3.1和string,vector的比较3.2对于list的分析3.3总结4.迭代器类的封装5.list容器里面其他函数的实现6.个人总结7.代码附录1.两个基本的结构体搭建首先就是我......
  • 【蓝桥杯】2024.9.22算法赛——灵魂问题\全栈项目小组(C++)
    一、灵魂问题题目灵魂问题题目分析1.要求输出一个整数2.题目在玩脑筋急转弯,关键句子标出来了——糖什么的根本不重要。所以咖啡不加糖,答案是0!!!代码#include<iostream>usingnamespacestd;intmain(){ cout<<0; return0;}二、全栈项目小组题目全栈项目小组......
  • C++ 线程池
    #include<iostream>#include<string>#include<memory>#include<vector>#include<thread>#include<queue>#include<functional>#include<mutex>usingnamespacestd;classThreadPool{public:Thread......
  • C++:数组与字符串
    一、数组         数组是一种存储若干元素的数据类型,在诸多编程语言中存在,其显著的特点是元素通常是在物理层面上连续存储的(逻辑上的数组,比如链表,可能不是),并且具有极快的元素访问速度。    数组通常是同构的(homogenous ),即数组中的元素都是同一类型的,......
  • [数据结构与算法·C++] 笔记 1.4 算法复杂性分析
    1.4算法复杂性分析算法的渐进分析数据规模n逐步增大时,f(n)的增长趋势当n增大到一定值以后,计算公式中影响最大的就是n的幂次最高的项其他的常数项和低幂次项都可以忽略大O表示法函数f,g定义域为自然数,值域非负实数集定义:如果存在正数c和n,使得对任意的......