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

山东响应式网站开发搜索竞价

山东响应式网站开发,搜索竞价,传奇sf 新开网站,北京建站者公司std::visit std::visit 使得variant可以使用类似函数重载的条用模式: std::visit 是 C17 引入的一个非常强大的工具,用于处理 std::variant(变体类型)中的数据。它允许你对 std::variant 中存储的不同类型的数据执行不同的操作&a…

std::visit

std::visit 使得variant可以使用类似函数重载的条用模式:
std::visit 是 C++17 引入的一个非常强大的工具,用于处理 std::variant(变体类型)中的数据。它允许你对 std::variant 中存储的不同类型的数据执行不同的操作,而无需手动检查类型。以下是 std::visit 的几种常见用法:

1. 使用对象函数方式访问

你可以定义一个访问者类,为每种可能的类型提供一个 operator() 函数。然后,使用 std::visit 调用相应的函数。

示例代码:
#include <iostream>
#include <variant>
#include <string>struct MyVisitor {void operator()(double d) const {std::cout << d << '\n';}void operator()(int i) const {std::cout << i << '\n';}void operator()(const std::string& s) const {std::cout << s << '\n';}
};int main() {std::variant<int, double, std::string> var1(42), var2(3.14), var3("visit");std::visit(MyVisitor(), var1);std::visit(MyVisitor(), var2);std::visit(MyVisitor(), var3);return 0;
}

2. 使用泛型 Lambda 表达式访问

std::visit 也可以与泛型 Lambda 表达式一起使用,这使得代码更加简洁。

示例代码:
#include <iostream>
#include <variant>
#include <string>auto printvariant = [](const auto& val) {std::cout << val << std::endl;
};int main() {std::variant<int, double, std::string> var1(42), var2(3.14), var3("visit");std::visit(printvariant, var1);std::visit(printvariant, var2);std::visit(printvariant, var3);return 0;
}

3. 使用重载的 Lambda 表达式访问

你可以定义一组 Lambda 表达式,并使用 std::visit 来选择最适合当前类型的 Lambda。

示例代码:
#include <iostream>
#include <variant>
#include <string>template<typename... Ts>
struct overload : Ts... {using Ts::operator()...;
};template<typename... Ts>
overload(Ts...) -> overload<Ts...>;int main() {std::variant<int, std::string> var(42);std::visit(overload{[](int i) { std::cout << "int: " << i << '\n'; },[](const std::string& s) { std::cout << "string: " << s << '\n'; },}, var);return 0;
}

4. 多个 std::variant 的访问

std::visit 还可以同时处理多个 std::variant,这在处理多个可能的类型组合时非常有用。

示例代码:
#include <iostream>
#include <variant>
#include <string>struct LightItem {};
struct HeavyItem {};int main() {std::variant<LightItem, HeavyItem> basicPackA;std::variant<LightItem, HeavyItem> basicPackB;std::visit(overload{[](LightItem&, LightItem&) { std::cout << "2 light items\n"; },[](LightItem&, HeavyItem&) { std::cout << "light & heavy items\n"; },[](HeavyItem&, LightItem&) { std::cout << "heavy & light items\n"; },[](HeavyItem&, HeavyItem&) { std::cout << "2 heavy items\n"; },}, basicPackA, basicPackB);return 0;
}
http://www.dtcms.com/wzjs/175254.html

相关文章:

  • 海宁网站建设学营销app哪个更好
  • 通付盾 公司网站建设龙岗网站设计
  • 垂直行业b2b网站做的好的国际新闻大事
  • 网站注册地址查询恶意点击软件哪个好
  • 太原市建设北路小学网站百度自媒体平台
  • 杭州建筑设计公司排名济南seo小黑seo
  • 深圳外贸网站建设制作百度搜索引擎营销如何实现
  • 深圳印刷网站建设房地产估价师考试
  • 吉林网站建站系统哪家好网站优化推广seo
  • 网页设计实训总结报告三千字视频seo优化教程
  • wordpress 评论验证码南京seo网络推广
  • 做ppt用什么网站好百度免费推广方法
  • 做国际网站有用吗线下推广方式
  • 网站建设业务活动百度导航最新版本
  • 网站建设要那些东西百度人工客服24小时电话
  • 免费制作个人网站的软件快速排名点击工具
  • 成都企业网站备案流程关键词推广优化app
  • 镇江网站优化商铺营销推广方案
  • 网站建设类岗位百度推广怎么弄
  • WordPress社团展示seo综合查询什么意思
  • 网站建设怎么购买域名万州网站建设
  • 大学生做网站步骤网络营销案例有哪些
  • 9个做简历的网站推广网
  • 纯css做的响应式网站公司品牌推广方案范文
  • 建筑设计公司哪家好济南seo排名优化推广
  • 创意二维码制作网站网页版
  • 专业搭建网站公司网站优化方案
  • asp和php的建站区别个人博客
  • 什么公司时候做网站网站快速排名服务
  • Python做网站 性能b站推广网站2024年