有一个古老的c++问题:struct Empty{}; sizeof(Empty); 请问Empty的大小是多少。 很多新手会回答0,但稍有经验的开发者会说出正确答案,大小至少是1字节。 这看起来很奇怪,但这是语言规范决定的:c++要求同一类型的不同实例对象必须拥有完全不同的地址,如果Empty的大 ...
题目链接 题解 考虑按位思考。将其转换成 \(x_i=0,1\) 的特殊性质,假设此时的二进制位为第 \(k\) 为,那操作就相当于如果 \(x_i\&2^k=1\) 那就等价于特殊性质 \(x_i=1\),反之为 \(0\)。可以差分在 \(O(n^2)\) 的时间复杂度内求出那些位置被覆盖了,即 ...
起因 C++14 引入 STL 的 make_index_sequence 可以生成一个类型为 std::size_t,0 到 N-1 的编译期序列,我们可以这样使用它: 代码 //利用函数参数推导提取序列 template<std::size_t... Seq> void foo(std::ind ...
题目描述 经典的分 \(k\) 段问题,要求求出分 \(k\) 段后使每段顺序对数量之和最小,求这个最小的值。 思路 首先,我们很好得出这种分段问题的状态转移方程即 $$dp_{i,j}=\min{dp_{k,j-1}+w(k+1,i)}$$ 其中 \(dp_{i,j}\) 表示选到前 \(i\) ...
将真实的异步 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 的全称是 Server-Sent Events(服务器发送事件),本质是基于 HTTP 协议的 “单向实时推送技术”——只有服务器能主动给客户端发消息,除了发送订阅请求外,客户端只能接收数据。SSE消息是纯文本格式,SSE标准支持自动重连。 2、SSE与WebSocket 通信协议 ...
网上 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 ...