
C++
文章平均质量分 78
C++学习记录
Sakuya__
这个作者很懒,什么都没留下…
展开
-
封装CUDA为动态链接库+Qt调用
由于工作需要在Qt中调用CUDA做并行计算,加速算法实现时间,发现有两种方法可以在Qt中调用CUDA代码。第一种是在项目中创建CUDA的cu文件,编写CUDA的核函数给其他的QT代码调用,Qt的代码正常编译,CUDA代码使用nvcc编译器编译。这种方法只要配置一下pro文件就可以了,适合CUDA代码比较少的项目,只需要几个核函数调用CUDA进行一下加速运算,具体方法可以看我的另一篇博客:QT+CUDA 同时编译Qt和CUDA代码工作需要把cuda的代码移植到QT中,和Qt项目一起编译,这里记录一下。原创 2024-08-27 15:14:45 · 1572 阅读 · 0 评论 -
QMap或结构体根据value排序
QMap是Qt的一个关联式容器,可以用于存储键值对,并提供了快速的查找和访问方式。当我们向QMap中插入元素时,默认按照键值对的大小升序排序。如果我们现在有一个这样一个需求,QMap<QString, double> map,存储的数据为名字对应值,如:(apple, 12.2),(orange, 23.3),(banana, 10.5)。原创 2023-08-25 14:19:50 · 1190 阅读 · 0 评论 -
C++ stringstream
简介在做LeetCode算法题的时候看到有使用stringstream类处理字符串,自己对这个类不是很了解,查了资料在这里记录一下。首先,需要包含头文件<sstream>,在标准库中:#include <sstream><sstream> 定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstre...原创 2022-01-30 21:59:29 · 12586 阅读 · 4 评论 -
C++容器 vector
介绍vector 容器是STL中最常用的容器之一,它和 array 容器非常类似,都可以看做是对C++普通数组的“升级版”。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会动态调整所占用的内存空间,整个过程无需人工干预。vector 常被称为向量容器,因为该容器擅长在尾部插入或删除元素,在常量时间内就可以完成,时间复杂度为O(1)。而对于在容器头部或者中部...原创 2022-01-31 13:51:38 · 3223 阅读 · 0 评论 -
C++容器 pair
介绍std::pair是一个类模板,它提供了一种将两个异构对象存储为一个单元的方法。pair由< 键 , 值 >构成的“键值对”数据类型,每行都表示一个键值对,其中第一个元素作为键(key),第二个元素作为值(value),例如:<"C++", "C++ Primer Plus"><"Python", "Python机器学习及实践"><"Java", "Java语言程序设计">初始化pair类型对象...原创 2022-01-28 18:36:02 · 6135 阅读 · 0 评论 -
小数的二进制和十六进制表示
简述今天在研究生复试面试的过程中被问到小数的二进制和十六进制形式怎么表示,然而这个知识点已经记不得了,只能尴尬的和老师说这个知识点没有掌握好,回去会继续学习。不过最后的成绩还不错,复试第三,回去查了下小数的二进制和十六进制的表示方法,在这里做一个记录。十进制小数转N进制小数,方法为小数部分乘N取整,每次乘以相应基数之后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为N进制小数,这时就需要取近似值。下面详细说下十进制小数转为二进制小数和十六进制小数的方法。小数用二进制表示.原创 2021-03-27 17:26:11 · 15208 阅读 · 0 评论 -
volatile关键字
一、介绍volatile是一个特征修饰符(type specifier),它的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。不光在C#中有volatile这个关键字,在C++和C中同样有。编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看原创 2020-09-28 20:52:02 · 473 阅读 · 0 评论 -
Linux 互斥锁 递归锁 自旋锁 读写锁
锁是什么,我们为什么要用到锁?回到问题的本质,我们在什么场景下会用到锁,是在针对于公共资源,也就是临界资源的使用。对于多线程编程,当两个或多个线程同时访问或对一个临界资源操作的时候,为了防止出现数据不一致的问题,我们在使用之前要进行加锁,使用完后进行解锁。...原创 2020-09-06 01:47:51 · 3924 阅读 · 0 评论 -
Windows 临界区(CRITICAL_SECTION)的使用
同步和互斥机制基本概念同步和互斥的概念有时候很容易混淆,可以简单地认为同步是更加宏观角度的一种说法,互斥是冲突解决的细节方法。所谓同步就是调度者让任务按照约定的合理的顺序进行,但是当任务之间出现资源竞争,也就是竞态冲突时,使用互斥的规则强制约束允许数量的任务占用资源,从而解决各个竞争状态,实现任务的合理运行。同步和互斥密不可分,有资料说互斥是一种特殊的同步,对此我不太理解,不过实际中想明白细节就行,文字游戏没有意义。简单来说:同步与互斥机制是用于控制多个任务对某些特定资源的访问策略 同步原创 2020-09-06 02:34:25 · 3761 阅读 · 0 评论 -
C++ 调用dll的方法
在C++中,为了支持重载机制,在编译生成的汇编码中,要对函数的名字进行一些处理,加入比如函数的返回类型等等.而在C中,只是简单的函数名字而已,不会加入其他的信息.也就是说:C++和C对产生的函数名字的处理是不一样的。dll的开发者可以通过dll隐藏接口的代码实现,比如你只想让其他人使用你的算法,但不想让其他人知道你的算法和逻辑代码,就可以把它们封装到dll中。动态调用不是链接时完成的,而是在运行时完成的,动态调用不会在可执行文件中写入DLL相关的信息,而是直接调用dll中的函数。原创 2020-05-01 03:27:58 · 57038 阅读 · 13 评论 -
C++ 回调函数
原创 2020-04-04 02:42:56 · 1253 阅读 · 1 评论 -
C++Primer第五版 第六章习题答案
练习6.1 形参:在函数参数列表中声明的局部变量,它们由每个函数调用中提供的参数初始化,作用是说明函数参数的类型。 实参:函数调用中提供的值,用于初始化函数的参数。练习6.2 函数的类型必须与函数的返回类型相匹配 实参的类型必须与对应的形参相匹配(a) // 返回类型是string,所以函数类型也应该是string s...原创 2020-02-20 10:01:03 · 1886 阅读 · 1 评论 -
C++Primer第五版 第五章习题答案
练习5.1 空语句:最简单的语句,空语句只有一个单独的分号。当程序中在语法上需要一条语句但是逻辑上却不需要时,此时应该使用空语句。//不断的读取输入流的内容,直到输入中遇到s。while (cin >> a && a != s) ; //使用空语句时,应该加上注释,使得代码阅读者知道语句是有意义的。练习5.2...原创 2020-02-16 21:40:28 · 1325 阅读 · 0 评论 -
C++Primer第五版 第四章习题答案
练习4.1原创 2020-02-15 17:25:27 · 1048 阅读 · 0 评论 -
C++Primer第五版 第三章习题答案
练习3.1...原创 2020-02-12 22:55:52 · 2330 阅读 · 0 评论 -
C++Primer第五版 第二章习题答案
练习2.1 short和int至少16位,long至少16位,long long至少32位。 有符号可以表示正数、负数和零,无符号只能表示不小于零的数。 float是单精度浮点数,有6位有效数字,double是双精度浮点数,有10位有效数字。用法: 使用整数运算。short通常太小,实际上long通常与int的大小相同,如果数据值大于in...原创 2020-02-10 23:04:34 · 1804 阅读 · 3 评论 -
C++Primer第五版 习题答案
最近疫情严重,哪也不能去一直待在家里,正好趁着有时间,可以做一些自己喜欢的事情或者一直想做却因为没时间而搁置的事情。就想着把C++Primer这本书重新看一遍,这本书是入门必看,主要是想借着重新看一遍这本书,把自己的知识再复习整理一遍,让零散的东西形成体系,能更扎实的掌握。看的不是很快,课后的习题一题一题写完自己运行一遍也需要时间,虽然慢,但一定会写完。 这本书知...原创 2020-02-08 22:30:00 · 1121 阅读 · 3 评论 -
C++Primer第五版 第一章习题答案
练习1.3#include <iostream>int main(){ std::cout << "Hello, World" << std::endl; return 0;}练习1.4#include <iostream>int main(){ std::cout << "E...原创 2020-02-08 18:13:28 · 1285 阅读 · 1 评论 -
C/C++字节对齐
简述今天在优快云上看到一题腾讯的面试题,题目是这样的:struct Test{ int a; char b; short c;};问:sizeof(Test)=?Test test;sizeof(test)=?我们在编译器中输出结果可以看到:我们都知道,一般int占4字节,char占1个字节,short占2个字节,结果不是应该是7个字节吗...原创 2019-04-28 18:57:03 · 452 阅读 · 0 评论 -
Windows下进程间通信的方法
简述百度词条对进程间通信的定义:进程间通信(IPC-Interprocess communication),就是在不同进程之间传播或交换信息。那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个...原创 2019-05-24 11:17:33 · 671 阅读 · 0 评论 -
C++中Const的用法总结
const 是constant 的缩写,在C++关键字中const是一个限定符,被它修饰的变量不能被改变。但是const不仅仅可以修饰变量,还可以修饰函数,参数等等。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。所以很多书都建议尽可能使用const。目录一、const修饰变量二、const的引用三、指针和const四、const修饰函数参数...原创 2019-02-15 18:23:38 · 1355 阅读 · 0 评论