刷新
C++20新增属性[[no_unique_address]]详解

博主头像 有一个古老的c++问题:struct Empty{}; sizeof(Empty); 请问Empty的大小是多少。 很多新手会回答0,但稍有经验的开发者会说出正确答案,大小至少是1字节。 这看起来很奇怪,但这是语言规范决定的:c++要求同一类型的不同实例对象必须拥有完全不同的地址,如果Empty的大 ...

QOJ1087

博主头像 题目链接 题解 考虑按位思考。将其转换成 \(x_i=0,1\) 的特殊性质,假设此时的二进制位为第 \(k\) 为,那操作就相当于如果 \(x_i\&2^k=1\) 那就等价于特殊性质 \(x_i=1\),反之为 \(0\)。可以差分在 \(O(n^2)\) 的时间复杂度内求出那些位置被覆盖了,即 ...

C++ 使用分治减小模板递归深度

博主头像 起因 C++14 引入 STL 的 make_index_sequence 可以生成一个类型为 std::size_t,0 到 N-1 的编译期序列,我们可以这样使用它: 代码 //利用函数参数推导提取序列 template<std::size_t... Seq> void foo(std::ind ...

P5574 [CmdOI2019] 任务分配问题

题目描述 经典的分 \(k\) 段问题,要求求出分 \(k\) 段后使每段顺序对数量之和最小,求这个最小的值。 思路 首先,我们很好得出这种分段问题的状态转移方程即 $$dp_{i,j}=\min{dp_{k,j-1}+w(k+1,i)}$$ 其中 \(dp_{i,j}\) 表示选到前 \(i\) ...

HPX高性能并行编程1:C++标准和标准库

1 C++、C++ 标准和 C++ 标准库 1.1 C++、C++ 标准和并行编程简史 C++ 基于 Dennis Ritchie 在贝尔实验室工作期间于 1969 年至 1973 年创建的编程语言 C。1973 年,Ritchie 的编译器被用于编译 PDP-11 计算机的 Unix 内核。这是第 ...

C/C++与Java混合的JNI编程

博主头像 Java与C++混合编程可以实现两种语言的优势结合,C++的程序性能很高且支持强大的系统调用能力,Java则生态丰富且开发效率较高。JNI是Java与C++进行混合编程的关键桥梁,本章将基于JNI技术讲述Java与C++混合编程的方法和技巧。 1. Java与JNI 1.1. 什么是Java? Ja ...

const char* 指针作为函数参数也能被修改?

博主头像 问题 如下示例程序所示, 首先构建了一个如下所示的Node树,每个节点存有一个数字。程序需要通过node的name返回其数字,即findNodeNumByName,其中name是const char*,表示方法中不会修改其参数。另外这个参数来自于另外一个方法,即findNodeNameByNum,输 ...

pkg-config【Linux包管理工具】

博主头像 PkgConfig(pkg-config)是一个在 Linux/Unix 开发中管理库的编译和链接参数的工具,能自动生成正确的头文件路径(-I)、库路径(-L)和链接库名称(-l)等标志。以下为详细使用指南: pkg-config命令使用 1. 安装 Debian/Ubuntu: sudo apt- ...

Qt | 四种方式实现多线程导出数据功能

前言 在以往的项目开发中,在很多地方用到了多线程。针对不同的业务逻辑,需要使用不同的多线程实现方法,来达到优化项目的目的。本文记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方式。 示例已上传到gittee,地址:https://gitee.co ...

C++高性能:优化代码运行效率的艺术1 C++简介

1 C++ 简介 本书旨在为您提供编写高效应用程序的坚实基础,并深入了解在现代 C++ 中实现库的策略。我尝试以实用的方法来解释当今 C++ 的工作原理,其中从 C++ 11 到 C++ 20 的现代特性已成为该语言的自然组成部分,而不是从历史的角度来看待 C++。 在本章中,我们将: 介绍一些对于 ...

CMake学习记录

博主头像 CMake学习记录 宏 macro (do_test arg1 arg2 result) add_test (test_${arg1}_${arg2} Demo ${arg1} ${arg2}) set_tests_properties (test_${arg1}_${arg2} PROPERTIE ...

记忆排列题目分析

博主头像 ## 题目概述 给你一个排列 $p$,共有 $n$ 个元素,你可以选择两个数 $i,j$,然后将 $p_i$ 移动到位置 $j$,这个过程需要花费 $i+j$ 的代价,问你通过这些操作过后所能使 $p$ 变为降序的最小代价。 ## 思路 变成降序似乎不是我们所擅长的,我们先转化为变成升序,这个是... ...

使用uint64_t批量比较短字符串

博主头像 记录一下从开源代码里学来的短字符串比较优化。 这个优化只适用于长度在八字节以下的字符串,且只适用于优化相等比较。 原理 想要判断字符串相等,常见的有利用strcmp、利用字符串的hash或者利用正则表达式等。 就速度而言strcmp > hash > 正则,而灵活性上正则 > hash ≈ strc ...

SSE客户端C++实现(使用libcurl)

博主头像 1、概述 SSE 的全称是 Server-Sent Events(服务器发送事件),本质是基于 HTTP 协议的 “单向实时推送技术”——只有服务器能主动给客户端发消息,除了发送订阅请求外,客户端只能接收数据。SSE消息是纯文本格式,SSE标准支持自动重连。 2、SSE与WebSocket 通信协议 ...

各种优化建图、最短路建模技巧

博主头像 直接看题吧,思路有了,但是有些题代码没打。兔子正在加油中。 优化建图 I.(线段树)CF786B Legacy 题目描述 三种连边操作,执行 \(q(1\le n\le10^5)\) 次: \(x\xrightarrow{w}y\) \(x\xrightarrow{w}y,y\in[l,r]\) \ ...

<1···456···9>