抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

PyBind11实现Python调用C++ 我曾经写过一篇SWIG实现Python调用C++的文章,SWIG是一个非常好用的通用工具,可以实现很多语言间的互通,不过最近我发现一个专门为Python和C++设计的库,PyBind11,AI领域貌似更喜欢这个库 PyBind11是一个非常轻量的纯头文件库,可以看作对Boost.Python的简化模仿,这个库要求至少使用C++11、Python 3...

奇异递归模板模式 Curiously Recurring Template Pattern,CRTP 最近发现一个很优雅的写法,CRTP,利用了模版和继承的特性,实现了一种奇观的“自我认知”,可以省去写很多重复代码 C#实现一个单例 定义 using System.Collections;using System.Collections.Generic;using UnityEngine...

Linux下GCC降级 CUDA版本需要和gcc版本对应,兼容性出奇地差,Ubuntu自带gcc,但是通常版本很高,于是需要对gcc进行降级 降级到gcc-7 安装gcc-7 sudo apt-get install gcc-7 g++-7 设置gcc版本优先级 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-...

C++20特性 现在是2023年,C++23都出来很久了(尽管很多编译器没有实现全功能),但还是有着大量C++11/17的老项目,出于人力和风险的考虑并没有上新标准,我作为一个C++菜鸡,也没想着去了解C++20都更新了什么,直到最近遇到了很多语言层面的问题,于是想着学习一下C++20特性 当然这里面不止C++20 语言特性 指定初始化 可以只初始化一部分,可以指定想要初始化的部分 st...

C/C++编译与链接 《程序员的自我修养:链接、装载与库》阅读笔记 编译 编译可以被分为四个步骤: 预编译(Prepressing) 编译(Compilation) 汇编(Assembly) 链接(Linking) 预编译 gcc -E hello.c -o hello.i cpp hello.c > hello.i 移除并展开所有#define 处理所有条件预编译指令,如#...

map 突然发现一个华科大佬的博客,学习一波 map是一种映射结构,能够存取键值对(键是唯一的) map通常有两种实现方式:哈希表(std::unordered_map)、红黑树(std::map) 哈希表 哈希表的查找删除均为O(1) 哈希表是一种空间换时间的算法,现在我们要存储一组键值对,假设键的范围是0~99,那么我们就开辟一个大小为100的数组,数组中存储了指向值的指针,于是我们...

grep搜索lib grep 前几天写代码发现链接不到某个函数,同事说我肯定少链接了一个.lib文件,然我却不知道少链接了谁 同事交给我一个小技巧,lib文件本质是一个代码压缩包,是可以对里面的内容进行搜索的,在Linux(WSL)中进入存放.lib的库,输入命令 grep -r <函数名> . 就会匹配vkCmdBeginDebugUtilsLabelEXT这个函数在哪一个.l...

C++获取CPU型号 不同CPU的指令集有所差异,尤其是在使用SIMD之类的feature时要十分注意,以MSVC获取CPU型号为例 核心是使用指令__cpuid,其实你也可以__asm {}自己写汇编 #include <iostream>#include <string>#include <intrin.h>#include &...

C++20下spdlog使用踩坑 spdlog是一个开源的被广泛使用的C++log系统,于是我模仿Piccolo引擎写了一个Log系统,结果由于C++不允许连续进行两次及以上的用户自定义的隐式构造,使得spdlog的log函数无法正确推断匹配Args...,最后在公司C++高手的帮助下成功解决了问题,于是在此记录一下踩坑历程 最初的版本 我参考开源项目的实现,使用spdlog写了一个简易的L...

无状态方法 线程安全 同事经常跟我强调线程安全的重要性,比如下面这段代码,id是一个静态成员变量,被所有Student类的对象共享,在多线程环境下可能会造成不确定行为 class Student{private: static int id = 0;public: int getId() { return id; }}int Student::i...