首页/新闻资讯/正文详情

C++ 现代教程三

发布时间:2026/11/7 19:36:54 来源:云帆数科 栏目:资讯中心
C++ 现代教程三
// 模板参数类型区分 template class T static std::string cppdemangle() { std::string s{cppdemangle(typeid(std::remove_cv_tstd::remove_reference_tT))}; if (std::is_const_vstd::remove_reference_tT) s const; if (std::is_volatile_vstd::remove_reference_tT) s volatile; if (std::is_lvalue_reference_vT) s ; if (std::is_rvalue_reference_vT) s ; return s; } // 显示转换枚举值 template class T, std::enable_if_tstd::is_enum_vT, int 0 constexpr std::underlying_type_tT to_underlying(T t) noexcept { return static_caststd::underlying_type_tT(t); } template class T, std::enable_if_t!std::is_enum_vT, int 0 constexpr T to_underlying(T t) noexcept { return t; } //文件操作 static std::string file_get_content(std::string const path) { std::ifstream fin(path); std::string content; std::istreambuf_iteratorchar iit(fin), eiit; std::back_insert_iteratorstd::string sit(content); std::copy(iit, eiit, sit); return content; } static void file_put_content(std::string const path, std::string const content) { std::ofstream fout(path); fout content; } static bool file_exists(std::string const path) { std::ifstream fin(path); return (bool)fin; } // win min max冲突 #ifdef _WIN32 #ifndef NOMINMAX #define NOMINMAX #endif #ifndef _USE_MATH_DEFINES #define _USE_MATH_DEFINES #endif /* FUN FACT: DID YOU KNOW THAT MICROSOFT BUYS GITHUB? */ #if __has_include(windows.h) #include windows.h #elif __has_include(math.h) #include math.h #endif /* FUN FACT: DID YOU KNOW THAT MICROSOFT INVENTS VSCODE? */ #ifdef min #undef min #endif #ifdef max #undef max #endif #ifdef near #undef near #endif #ifdef far #undef far #endif #endif // 耗时 #define TICK(x) auto bench_##x std::chrono::steady_clock::now(); #define TOCK(x) std::printf(%s: %lfs\n, #x, std::chrono::duration_caststd::chrono::durationdouble(std::chrono::steady_clock::now() - bench_##x).count()); // 随机字符串生成 inline std::string randomStringGenerator(const int len) { std::string res; static const char alphanum[] 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz; for (int i 0; i len; i) res alphanum[((size_t)std::rand() % (sizeof(alphanum) - 1))]; return res; } // C20之三目运算 templatetypename T void compare(T x, T y) { auto ret x y; std::cout name: typeid(ret).name() std::endl; if (ret 0) std::cout x y: x , y std::endl; else if (ret 0) std::cout x y: x , y std::endl; else std::cout x y: x , y std::endl; } // C20之字符与数值转换 #include charconv // std::to_chars: converts an integer or floating-point value to a character sequence std::arraychar, 10 buffer; // 注意:std::errc没有到bool的隐式转换,所以你不能像下面这样检查: if (res.ec) {} or if (!res.ec) {} if (auto [ptr, ec] std::to_chars(buffer.data(), buffer.data() buffer.size(), val_int); ec std::errc()) { std::cout str: std::string_view(buffer.data(), ptr - buffer.data()) \n; // str:88 *ptr \0; // 保证结尾有一个空字符 std::cout buffer: buffer.data() \n; // buffer:88 } else { std::cerr fail to call to_char: std::make_error_code(ec).message() \n; return -1; } auto str2 456.789; float val2{ 0.f }; auto [ptr2, ec2] std::from_chars(str2.data(), str2.data() str2.size(), val2); if (ec2 std::errc()) std::cout val2: val2 \n; // val2:456.789 else if (ec2 std::errc::invalid_argument) std::cerr Error: this is not a number: str2 \n; else if (ec2 std::errc::result_out_of_range) std::cerr Error: this number is larger than an float: str2 \n; else std::cerr fail to call from_chars: std::make_error_code(ec2).message() \n; // C17之并行策略 #include algorithm #include iostream #include vector #include execution std::vectorint v { 5, 2, 3, 1, 4 }; std::vectorint v2(5); std::sort(std::execution::seq, v.begin(), v.end()); // 向量 std::for_each(std::execution::unseq, v.begin(), v.end(), [](int x) { std::cout x ; }); // 向量化单线程 std::transform(std::execution::par, v1.begin(), v1.end(), v2.begin(), [](int x) { return x * x; }); // 多线程 std::for_each(std::execution::par_unseq, v.begin(), v.end(), [](int x) { std::cout x ; }); // 硬软件或SMID https://www.geeksforgeeks.org/execution-policy-of-stl-algorithms-in-modern-cpp/ // C头文件定义全局变量 class InlineVariable { public: inline static int var{ 10 }; // 不带inline,则只能在类外初始化;即使在类外初始化,如果被多个cpp文件包含也会error;带inline后,即使被多个cpp文件包含也OK inline static std::string name{ Messy_Test }; // 整个程序中只有一个 inline static thread_local int count{ 1 }; // 每个线程有一个 std::string city{ BeiJing }; // 每个实例有一个 }; inline InlineVariable inline_variable; // 不带inline,则会报重复定义;带inline后,即使被多个cpp文件包含也OK // 获取实际对象地址 std::addressof(c)C11中包含了以下几种String literal : Ordinary string literalL : Wide string literalu8 : UTF-8 string literalu : UTF-16 string literalU : UTF-32 string literalR : Raw string literalC 现代教程二-CSDN博客创作不易小小的支持一下吧

相关推荐

根据模板和git commit自动生成日·周·月·季报
根据模板和git commit自动生成日·周·月·季报

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 19:36:54

Docker 部署 mysql 服务
Docker 部署 mysql 服务

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 13:42:08

自定义窗口事件循环系统
自定义窗口事件循环系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 16:36:15

电工证实体证领取地点到期换证流程多少钱
电工证实体证领取地点到期换证流程多少钱

电工证实体证领取地点到期换证流程多少钱 你是不是也担心自己学历不高,考电工证会遇到障碍?别急,今天我就带着你一步步了解电工证实体证领取地点、到期换证流程和费用,尤其是针对河南地区初次报考人员的实际情况,帮你少走弯路, 多少钱… · 2026/11/7 19:36:44

电工证方面书籍怎么报名才能顺利上岗找工作
电工证方面书籍怎么报名才能顺利上岗找工作

电工证方面书籍怎么报名才能顺利上岗找工作 你是不是正在找工作,但因为没有电工证而被拒之门外?别急,这篇文章教你如何通过【电工证方面书籍】高效备考,顺利通过考试,拿到电工证, 怎么报名 也给你讲明白。… · 2026/11/7 19:36:44

大连电工证怎么领补贴内部消息曝光 合格标准与通过率全解析
大连电工证怎么领补贴内部消息曝光 合格标准与通过率全解析

大连电工证怎么领补贴内部消息曝光 合格标准与通过率全解析 怕考不过白交培训费?大连电工证怎么领补贴成了很多人的头等大事,但你真的了解这个证的含金量和报考细节吗? 内部消息… · 2026/11/7 19:36:44

电工作业羊眼圈考试真题与通过率揭秘:外省证能否转过来?
电工作业羊眼圈考试真题与通过率揭秘:外省证能否转过来?

电工作业羊眼圈考试真题与通过率揭秘:外省证能否转过来? 之前考的证在外省能不能转过来?这是很多特种作业人员最关心的问题,尤其是像电工作业羊眼圈这类证书,关系到能否继续从事相关岗位。今天咱们不讲虚的,就聊聊这个证在河南的实际情况,包括通过率揭… · 2026/11/7 19:36:44

外省高压电工证能用吗?电子证书怎么查?工地太忙根本没时间复习考试
外省高压电工证能用吗?电子证书怎么查?工地太忙根本没时间复习考试

外省高压电工证能用吗?电子证书怎么查?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,高压电工证外省能用吗?别急,今天咱们就来聊聊这个事儿。特别是像安阳这些中小施工企业负责人,手里头一堆项目,还要盯着工人持证上岗,高压电工证的… · 2026/11/7 19:36:44

装修要的电工证多久拿证?外省证怎么转?真相来了
装修要的电工证多久拿证?外省证怎么转?真相来了

装修要的电工证多久拿证?外省证怎么转?真相来了 之前考的证在外省能不能转过来?这几乎是每个准备考装修电工证的人最先问的问题。特别是那些在外地打工、换过工作城市的朋友,更关心自己的证书能不能在新地方用。其实,只要你是在国家应急管理部认证的… · 2026/11/7 19:35:44

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?
澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 证书过期了不知道怎么复审延期?别慌,很多人在拿到【澳洲水电工证考试】的电子证书后,一不小心就忽略了复审时间,结果证书失效,工作受阻,甚至被单位追责。今天就从【澳洲水电工证考试… · 2026/11/7 0:00:41

电工作业提示版通过率揭秘:怎么考才能一次过?
电工作业提示版通过率揭秘:怎么考才能一次过?

电工作业提示版通过率揭秘:怎么考才能一次过? 怕考不过白交培训费?别急,今天我就从驻马店应届工程类毕业生的视角,带你全面了解电工作业提示版的考试流程、备考要点和真实通过率,帮你少走弯路、提高一次通过率。… · 2026/11/7 0:00:41

电工证年审报名千万别踩坑 外省证转过来要搞清这几点
电工证年审报名千万别踩坑 外省证转过来要搞清这几点

电工证年审报名千万别踩坑 外省证转过来要搞清这几点 之前考的证在外省能不能转过来?这个问题是很多电工从业者最关心的,特别是像你这样在商丘从事公路工程的人员,经常需要跨省流动,证书的 有效性 和 可迁移性… · 2026/11/7 0:00:41

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码