C++ 模板参数推导问题小记(非推导上下文)
最近遇到一个模板参数推导的问题,代码如下:
代码
template<typename T>
using scalar = std::enable_if_t<std::is_arithmetic_v<T>, T>;
template<typename T>
void foo(scalar<T> val)
{
...
}
foo(5);
这是我突发奇想写出来的,模板别名 scalar 限制函数参数为数值类型,可以在多处复用,这个代码无法通过编译, ...
栈的两种存储结构(顺序存储和链式存储)
栈的操作实现
栈的概念
栈是一种后进先出(LIFO)的线性数据结构,只允许在一端(栈顶)进行插入和删除操作。新元素总是添加到栈顶,而删除也总是从栈顶移除最上面的元素。栈常用于函数调用、表达式求值、括号匹配等场景。
代码实现---顺序存储(Array-based Stack)
#include <stdio.h> // 标准输入输出库,用于 printf 等 ...
双向链表的定义与基本操作
双向链表操作实现
双向链表
双向链表(Doubly Linked List)是一种链式数据结构,其中的每个节点不仅指向下一个节点,还指向前一个节点。这与单向链表不同,后者每个节点只包含到下一个节点的引用。双向链表因此允许在两个方向上遍历:向前和向后。
每个节点在双向链表中通常包含三部分:
指向前一个节点的引用(或指针) ...
C++高性能:优化代码运行效率的艺术1 C++简介
1 C++ 简介
本书旨在为您提供编写高效应用程序的坚实基础,并深入了解在现代 C++ 中实现库的策略。我尝试以实用的方法来解释当今 C++ 的工作原理,其中从 C++ 11 到 C++ 20 的现代特性已成为该语言的自然组成部分,而不是从历史的角度来看待 C++。
在本章中,我们将:
介绍一些对于编写健壮、高性能应用程序至关重要的 C++ ...
单链表的定义与基本操作
单链表操作实现
1.什么是单链表?
单链表是一种常见的线性数据结构,由一系列节点组成,每个节点包含两个部分:数据域 和 指针域。数据域存储实际数据,指针域指向下一个节点。在单链表中,数据元素可以非连续地存储在内存中,而节点之间通过指针相互连接。
2.代码实现
链表的创建、插入、删除、查找等常用操作。
#include ...
CMake学习记录
CMake学习记录
宏
macro (do_test arg1 arg2 result)
add_test (test_${arg1}_${arg2} Demo ${arg1} ${arg2})
set_tests_properties (test_${arg1}_${arg2}
PROPERTIES PASS_REGULAR_EXPRESSION ${result})
endmacro (do_test)
描述:macro(宏名 参数列表)可以定义一个宏
第一个参数:宏名
其余参数:在宏当中使 ...
模拟赛SXJ202507270900比赛记录&题解
题目请看
T1
贪心:主要考察\(<50\%\)时\(差值\ mod \ 2 \neq 0\)与\(>50\%\)时\(差值\ mod \ 3 \neq 0\)的情况
\(\begin{cases}
\text{计算 } cha = 50 - n \\
\text{如果 } cha \bmod 2 \neq 0 \text{ 则} \\
\quad \text{输出 } \left\lceil \dfrac{cha}{2} \right\rceil + 1 \\
\text{否则} \\
\quad \text{输出 } \dfr ...
记忆排列题目分析
题目概述
给你一个排列 \(p\),共有 \(n\) 个元素,你可以选择两个数 \(i,j\),然后将 \(p_i\) 移动到位置 \(j\),这个过程需要花费 \(i+j\) 的代价,问你通过这些操作过后所能使 \(p\) 变为降序的最小代价。
思路
变成降序似乎不是我们所擅长的,我们先转化为变成升序,这个是容易的只需要令 \(p_i=n-p_i+1\) 即可。
我们 ...
线性表-顺序存储
顺序表的实现与测试-C语言版
一、顺序表概念
顺序表(Sequential List)是线性表的一种存储方式,指的是采用顺序存储结构的线性表。在顺序表中,数据元素按照它们的逻辑顺序依次存放在一段地址连续的存储单元中。这种存储方式允许通过数学计算快速定位到任何一个元素的位置,从而支持随机访问。但是,顺序表的插入和删除操 ...
2.单向循环链表的接口设计
/****************************************************************************
*
* file name: 2025-07-11_CircularLinkedList.c
* author : 15515376695@163.com
* date : 2025-07-11
* function : 该程序设计单向循环链表的接口
* note : None
* CopyRight (c) 2025 15515376695@163.com Right ...
使用uint64_t批量比较短字符串
记录一下从开源代码里学来的短字符串比较优化。
这个优化只适用于长度在八字节以下的字符串,且只适用于优化相等比较。
原理
想要判断字符串相等,常见的有利用strcmp、利用字符串的hash或者利用正则表达式等。
就速度而言strcmp > hash > 正则,而灵活性上正则 > hash ≈ strcmp。
字符串的相等性比较可以说是程序运行中的 ...
SSE客户端C++实现(使用libcurl)
1、概述
SSE协议 的全称是 Server-Sent Events(服务器发送事件),本质是基于 HTTP 协议的 “单向实时推送技术”——只有服务器能主动给客户端发消息,除了发送订阅请求外,客户端只能接收数据。SSE消息是纯文本格式,SSE标准支持自动重连。
2、SSE与WebSocket
底层协议:SSE底层使用http协议( ...
1.顺序表的构建以及应用
设计了顺序表的创建,增添,删除,等函数接口
/****************************************************************************
*
* file name: 2025-07-10_Sequencelist.c
* author : 15515376695@163.com
* date : 2025-07-10
* function : 该程序实现顺序表元素的增删改查
* note : None
* CopyRight ...
FFmpeg开发笔记(七十五)使用qrencode和quirc对视频画面读写二维码
上一篇文章《Windows给FFmpeg集成二维码图像的编解码器》介绍了给FFmpeg集成二维码的编解码器qrencode和quirc,接下来讲解如何利用编码器qrencode向视频画面添加二维码,以及如何利用解码器quirc从视频画面读取二维码。
确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章“1.3 Windows系统安 ...
没有调度器的协程不是好协程——零基础深入浅出 C++20 协程
前言
上一篇《协程本质是函数加状态机》谈到 C++20 协程的本质,是编译器基于 duff device 的精巧封装,经过一番乾坤大挪移,协程体内容被掉包只保留协程初始化代码,实际运行代码被包裹在编译器自动生成的 resume 函数中,这一点通过 C++ Insights 在线工具观察的一清二楚。
然而上一篇举的数列生成器例子中,协程的运行还 ...
各种优化建图、最短路建模技巧
直接看题吧,思路有了,但是有些题代码没打。兔子正在加油中。
优化建图
I.(线段树)CF786B Legacy
题目描述
三种连边操作,执行 \(q(1\le n\le10^5)\) 次:
\(x\xrightarrow{w}y\)
\(x\xrightarrow{w}y,y\in[l,r]\)
\(x\xrightarrow{w}y,x\in[l,r]\)
求 \(s\) 到其余点的最短路。
暴力连边肯定不行。
有没有什么东西 ...
Qt问题记录002:QMap的erase陷阱,正常运行与调试模式结果不同
摘要:
Qt的QMap循环删除元素(erase),在运行时正常,在调试模式下报错,提供解决代码。
关键词:
QMap、erase、迭代器、遍历与删除
问题描述:
在使用 Qt 的 QMap 容器时,尝试在遍历过程中删除元素,在循环中调用 erase() 方法,虽然程序在正常运行时可能不会立即出现异常,但在调试模式下,可能会 ...
C23和C++26的#embed嵌入资源指南
c++26最近刚敲定标准,新增了许多重量级特性。
不过目前能实际上手测试的特性不多,毕竟标准刚刚确定,比较大的变更里只有“资源嵌入”或者用标准文档里英文名“resource inclusion”这个新特性可以尝鲜。
虽然这篇文章标题叫指南,但实际上更像实验记录,而且现在属于早期阶段编译器对资源嵌入的处理有可能会有改变(不过 ...
FFmpeg开发笔记(七十四)Windows给FFmpeg集成二维码图像的编解码器
《FFmpeg开发实战:从零基础到短视频上线》一书的“7.1.1 添加图片标志”介绍了如何给视频添加图片标志,比如给视频画面添加一张二维码图像。不过前提条件是存在二维码图片,因为FFmpeg本身不支持根据文本生成二维码图像。幸而从FFmpeg 7.0开始,通过第三方的libqrencode和libquirc库实现了二维码的读写功能,这样 ...
FFmpeg开发笔记(七十三)Windows给FFmpeg集成MPEG-5视频编解码器
MPEG-5是新一代的国际音视频编解码标准,像我们熟悉的MP3、MP4等音视频格式就来自于MPEG系列。MP3格式的说明介绍参见《FFmpeg开发实战:从零基础到短视频上线》一书的“5.2 MP3音频”,MP4格式的说明介绍参见《FFmpeg开发实战:从零基础到短视频上线》一书的“2.1.2 音视频文件的封装格式”。
MPEG-5现已开 ...