将真实的异步 IO 事件与协程相结合、例子规模控制在 150 行、能编译能运行的 C++20 协程 demo,见过没?今天就给各位老铁整一个,它还支持多协程并发哦~ ...
1 C++、C++ 标准和 C++ 标准库 1.1 C++、C++ 标准和并行编程简史 C++ 基于 Dennis Ritchie 在贝尔实验室工作期间于 1969 年至 1973 年创建的编程语言 C。1973 年,Ritchie 的编译器被用于编译 PDP-11 计算机的 Unix 内核。这是第 ...
Java与C++混合编程可以实现两种语言的优势结合,C++的程序性能很高且支持强大的系统调用能力,Java则生态丰富且开发效率较高。JNI是Java与C++进行混合编程的关键桥梁,本章将基于JNI技术讲述Java与C++混合编程的方法和技巧。 1. Java与JNI 1.1. 什么是Java? Ja ...
问题 如下示例程序所示, 首先构建了一个如下所示的Node树,每个节点存有一个数字。程序需要通过node的name返回其数字,即findNodeNumByName,其中name是const char*,表示方法中不会修改其参数。另外这个参数来自于另外一个方法,即findNodeNameByNum,输 ...
PkgConfig(pkg-config)是一个在 Linux/Unix 开发中管理库的编译和链接参数的工具,能自动生成正确的头文件路径(-I)、库路径(-L)和链接库名称(-l)等标志。以下为详细使用指南: pkg-config命令使用 1. 安装 Debian/Ubuntu: sudo apt- ...
前言 在以往的项目开发中,在很多地方用到了多线程。针对不同的业务逻辑,需要使用不同的多线程实现方法,来达到优化项目的目的。本文记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方式。 示例已上传到gittee,地址:https://gitee.co ...
最近遇到一个模板参数推导的问题,代码如下: 代码 template<typename T> using scalar = std::enable_if_t<std::is_arithmetic_v<T>, T>; template<typename T> void foo(scalar<T> val ...
1 C++ 简介 本书旨在为您提供编写高效应用程序的坚实基础,并深入了解在现代 C++ 中实现库的策略。我尝试以实用的方法来解释当今 C++ 的工作原理,其中从 C++ 11 到 C++ 20 的现代特性已成为该语言的自然组成部分,而不是从历史的角度来看待 C++。 在本章中,我们将: 介绍一些对于 ...
CMake学习记录 宏 macro (do_test arg1 arg2 result) add_test (test_${arg1}_${arg2} Demo ${arg1} ${arg2}) set_tests_properties (test_${arg1}_${arg2} PROPERTIE ...
题目请看 T1 贪心:主要考察\(<50\%\)时\(差值\ mod \ 2 \neq 0\)与\(>50\%\)时\(差值\ mod \ 3 \neq 0\)的情况 \(\begin{cases} \text{计算 } cha = 50 - n \\ \text{如果 } cha \bmod 2 ...
## 题目概述
给你一个排列 $p$,共有 $n$ 个元素,你可以选择两个数 $i,j$,然后将 $p_i$ 移动到位置 $j$,这个过程需要花费 $i+j$ 的代价,问你通过这些操作过后所能使 $p$ 变为降序的最小代价。
## 思路
变成降序似乎不是我们所擅长的,我们先转化为变成升序,这个是... ...
记录一下从开源代码里学来的短字符串比较优化。 这个优化只适用于长度在八字节以下的字符串,且只适用于优化相等比较。 原理 想要判断字符串相等,常见的有利用strcmp、利用字符串的hash或者利用正则表达式等。 就速度而言strcmp > hash > 正则,而灵活性上正则 > hash ≈ strc ...
1、SSE数据包格式 如下所示,一条SSE消息中可以有一个或多个message,每个message由\n\n分隔,一个message也可以由一个或多个filed组成,每个filed由\n分隔,filed有data、id、event、retry四种。 data表示消息数据,如"data:value\n ...
网上 C++20 协程的例子为什么难懂?要么太复杂没有进行简化,要么太简单脱离了实际使用场景,特别是后者,虽然每一行代码都能看懂,但如何在实际场景中使用就一头雾水了。今天来看一个带简单调度器的协程例子,看看协程是怎么自己运行起来的吧~ ...
直接看题吧,思路有了,但是有些题代码没打。兔子正在加油中。 优化建图 I.(线段树)CF786B Legacy 题目描述 三种连边操作,执行 \(q(1\le n\le10^5)\) 次: \(x\xrightarrow{w}y\) \(x\xrightarrow{w}y,y\in[l,r]\) \ ...
关键词: QMap、erase、迭代器、遍历与删除 问题描述: 在使用 Qt 的 QMap 容器时,尝试在遍历过程中删除元素,在循环中调用 erase() 方法,虽然程序在正常运行时可能不会立即出现异常,但在调试模式下,可能会遇到错误或未定义行为。 Qt版本:5.14.2 代码如下: void te ...
c++26最近刚敲定标准,新增了许多重量级特性。 不过目前能实际上手测试的特性不多,毕竟标准刚刚确定,比较大的变更里只有“资源嵌入”或者用标准文档里英文名“resource inclusion”这个新特性可以尝鲜。 虽然这篇文章标题叫指南,但实际上更像实验记录,而且现在属于早期阶段编译器对资源嵌入的 ...
这篇文章主要讲讲c++的ADL,顺便说说为什么很多c++的IDE都会让你尽量不要include用不上的头文件。 和其他c++文章一样,这篇也会有基础回顾环节,所以不用担心看不懂,但读者最好还是得有c++的基础知识并且对c++11之后的内容有所了解。 好了,下面我们进入正题吧。 偶遇报错 最近工作收尾 ...
什么是 RAII RAII(资源获取即初始化,Resource Acquisition Is Initialization),作为 C++ 的一个重要编程范式,已经被贯彻于标准库的各个角落。RAII 的核心思想是将资源与类的生命周期绑定,RAII 类是针对内部资源封装的资源管理类。 RAII 有什么 ...
reverse函数 在 C++ 中,reverse 是一个非常常用的 STL 算法,用于就地反转序列中的元素顺序。它定义在 <algorithm> 头文件中。 函数定义 template <class BidirectionalIterator> void reverse(Bidirec ...