C++
bleedingfight
用最少的资源搬最多的砖!
展开
-
计算机如何存储浮点数
在计算机中浮点数通常由三部分组成:符号位、指数位、尾数位。IEEE-754中32位浮点数如下:上图32bit浮点数包含1bit的符号位,8比特的指数位和23bit的尾数位。对于一个常规浮点数,我们来看看它是如何存储和计算的。这里以浮点数25.125为例。这个浮点数分为整数(25(d))和小数部分(0.125(d)),(下面25(d)中d表示十进制,后续b表示二进制)25d0.125d25.125d11001b0.001b11001.001b1.1001001E4b。原创 2024-07-07 13:18:56 · 849 阅读 · 0 评论 -
C++可变参数模板显式特例化
可变参数模板显式实例化原创 2022-06-29 11:08:22 · 439 阅读 · 0 评论 -
Linux开发工具
c++filt通过符号表计算函数签名,ubuntu下安装sudo apt install binutils-dev然后就可以使用。使用如下://test.cc//clang++ test.cc -o main#include <iostream>template <typename T> T add(T a, T b) { return a + b; }int main() { add(1, 1); add(1.0f, 1.0f); add(1., 2.);原创 2021-10-22 11:56:18 · 176 阅读 · 0 评论 -
C++调用动态库加载函数
文章目录使用dlopen通过动态库调用函数CMake构建环境下使用命令行工具验证上述流程使用bazel工具验证上述流程问题使用dlopen通过动态库调用函数CMake构建环境下目录结构如下:.├── CMakeLists.txt├── include│ └── add.h├── main.cc└── src ├── add.cc └── CMakeLists.txt2 directories, 5 files./CMakeLists.txt文件:cmake_原创 2021-09-20 23:06:51 · 675 阅读 · 0 评论 -
模板函数实现源码和头文件分离
文件目录.├── CMakeLists.txt├── include│ └── Operation.h├── main.cc└── src ├── CMakeLists.txt └── Operation.cc./CMakeLists.txtcmake_minimum_required(VERSION 3.14)project(name)include_directories(include)add_subdirectory(src)add_executabl原创 2021-08-18 20:40:38 · 277 阅读 · 0 评论 -
Bazel项目构建
Bazel构建简单的C++程序目录结构如下实现简单的两个数相加,主函数输出两个数的和├── libs│ ├── add.cc│ ├── add.h│ └── BUILD├── main│ ├── BUILD│ └── main.cc└── WORKSPACE文件说明WORKSPACE :表明此文件所在的路径为项目的根,其它项目均可以以此根节点访问main/BUILD:主函数的构建规则main/main.cc:主函数源代码libs/add.cc:库函数原创 2021-08-06 00:28:26 · 556 阅读 · 0 评论 -
PyTorch C++源码调试
PyTorch C++源码调试文章目录PyTorch C++源码调试1.编译PyTorch源码2.Debug 流程3. 实际演示环境:PyTorch源码:截止到(2021-6-25)源码,编译后torch.__version__=1.10.0a0+gitd03ff1aCPU编译:(因为需要debug 模块的C++运行逻辑,这里只编译了CPU支持)系统:5.10.18-1-MANJARO。需要注意的是manjaro滚动更新,当你目前滚动升级了,你的gcc版本将为11,cuda的编译将不支持。不过你原创 2021-06-25 15:56:46 · 1705 阅读 · 1 评论 -
C++/C联合编程
经常需要使用C++编码,同时有时候会需要用到C。直接编译C程序为动态库链接通常是没法正常工作的。如下:实现c程序的add.h:#ifndef ADD_H_H#define ADD_H_Hint add(int a, int b);#endifadd.c实现文件:#include "add.h"int add(int a, int b) { return a + b; }将代码编译为动态库:clang add.c -fPIC -shared -o libadd.so可以在本地查看到动原创 2021-04-16 13:56:10 · 283 阅读 · 0 评论 -
安装使用常见的C++开源库
安装使用数值计算库eigenunzip Downloads/eigen-eigen-153789649718.zip -d eigencd eigen/eigen-eigen-153789649718mkdir build cmake ..make -j2sudo make install使用eigen库#include &amp;amp;lt;iostream&amp;amp;gt;#include ...原创 2018-07-13 11:29:19 · 2937 阅读 · 0 评论 -
快速排序
快速排序算法流程:选定轴值privot(当前选择左边第一个元素)右指针放在最后一个元素,左指针放在第一个元素。右指针左移找到小于轴值元素,之后左轴值右移指导找到第一个大于轴值的元素,然后交换两个元素的值。继续移动右,左指针直到指向同一个值,将轴值所在位置的元素和相同节点的数值交换。递归排序左边到轴值左边和轴值右边到数组右边C++版本void fastsort(std::vector<int>& nums,int left,int right){ if(left&g原创 2020-05-29 22:52:32 · 164 阅读 · 0 评论 -
protobuf入门
protobuf介绍protobuf是google开发的语言独立的结构化数据存储或RPC数据交换格式。它与语言无关,平台无关。安装protobuf(c++),Ubuntu16.0.4下安装sudo apt-get install autoconf automake libtool curl make g++ unzipgit clone git@github.com:goog...翻译 2018-03-05 23:19:47 · 203 阅读 · 0 评论 -
C++ CMake与单元测试框架GTest
编写简答的单元测试项目目录如下:从上到下第一个文件CMakeLists.txt 是主文件。内容如下:cmake_minimum_required(VERSION 3.14)project(main)include_directories(include) # 包含函数头文件,通常需要将函数头文件和函数实现分开放置add_subdirectory(src) # 添加函数实现,函数实现中需要CMakeLists说明函数如何编译add_subdirectory(test) #测试代码目录,如何原创 2020-10-24 00:57:58 · 1739 阅读 · 0 评论 -
clion配置qt
clion结合QT开发qt程序配置设置designer设置uic配置需要保证qt已经安装。设置designerprogram:/opt/Qt5.14.0/5.14.0/gcc_64/bin/designerArguments:$FilePath$Workding directory:/opt/Qt5.14.0/5.14.0/gcc_64/bin设置uicprogram:/op...原创 2020-01-28 21:44:25 · 914 阅读 · 0 评论 -
clang++编译器使用
编译过程通常的程序需要经过预处理阶段,编译阶段,汇编阶段,链接阶段 - 预处理阶段:预处理阶段对包含源代码的文本文件(test.cc)处理,比如包含头文件到文件中,替换宏定义。生成预处理后的文件test.i - 编译阶段:编译器将预处理生成的文件翻译成汇编程序(test.s),汇编语言程序中的每条语句都以一种标准的文本格式确切的描述一条低级机器语言指令。汇编语言能为不同高级语言的不同编译器...原创 2018-07-04 01:40:34 · 40897 阅读 · 1 评论 -
击鼓传花游戏
代码参考这篇文章 题目来自于58同城: 总共m个人围成一圈,编号从1开始。从第一个人开始传一朵花,当传递到第n个人时,此人出局,此人下一个人开始重新技术,直到所有人都出局,请按照原始的编号给出出局顺序。例如:顺序为[1,2,3,4,5,6,7],m=7,每次传递到n=6时出局,出局顺序为[6,5,7,2,1,4,3]。#include &lt;bits/stdc++.h...原创 2018-09-16 11:04:19 · 3395 阅读 · 0 评论 -
C++测试工具gtest linux下安装使用
下载安装gtestgit clone https://github.com/google/googletest.gitcd googletestmkdir buildcmake ..make -4sudo make install测试(源代码来自这里)#include &amp;amp;lt;gtest/gtest.h&amp;amp;gt;#include &amp;amp;lt;iostream&amp;am原创 2018-08-16 16:23:40 · 750 阅读 · 0 评论 -
DFS例子
问题来自美团笔试输入一行表示节点数,接下来输入边,求从根节点访问所有节点的最短路径。 1 / \ 2 3 / \ 4 5 \ 6最短路径为:1-2-1-3-4-3-5-6.思路...原创 2018-09-08 16:09:42 · 327 阅读 · 0 评论 -
堆排序
堆排序算法构建最小堆取出最小堆第一个元素(最小值)剩下的数据构造最小堆(反复执行2,3直到取出所有的值为止)数组[72,23,5,68,94,16,71,84,76]表示的树构造最小堆: 最小堆的元素有如下关系: - 节点k的左右节点为2*k+1,2*k+2 ,你如节点5(index=2)左边节点71(index=2*2+1),右边节点84(index=2*2+1)尽管...原创 2018-09-03 00:45:27 · 7335 阅读 · 0 评论 -
桶排序
桶排序算法对于待排的数组,从前往后扫描,对于索引i的值,计数数组对应的索引+1得到计数桶。然后对于计数桶,从前往后累加得到累加桶。对于待排数组,从后往前依次取出值作为索引在累加桶中找到对应的值,该值减一得到的结果就是排序后桶应该在的位置。反复如此直到处理完待排序数组。 索 引: 0 1 2 3 4 5 6 7 8 9 原数组: 7 3 8 9 6 1 8 1 2 计数桶: 0 2 ...原创 2018-09-05 00:56:30 · 189 阅读 · 0 评论