
C/C++
文章平均质量分 85
assassin_sword
愿得一人心白首不分离
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
现代 CMake 简明教程--CMake 基础
前言用 CMake 来构建 C/C++ 项目是业内的主流做法。最近,我们的项目代码做了一些拆分和合并:引入其他仓库代码,并且将公共部分拆分以供多个仓库同时使用。为此,就得修改项目中的 CMake 以满足需求。在做这件事情时,过程是相当痛苦的,修改的难度超过了我的预期。这份痛苦的回忆,让我陷入了沉思:这 CMake 咋这么不好使,是我的使用姿势不对吗?CMake 的最佳实践是啥?在经过一番搜索和学习,我开始了解 Modern CMake 的一些用法与理念,它主张放弃传统的基于变量的方法,而采用基于转载 2021-02-08 00:54:20 · 2763 阅读 · 0 评论 -
CMake 教程
1. 编译单目录工程1.创建工程文件夹mkdir hello #工程目录cd hellomkdir src # 存放源代码的目录mkdir build # 存放编译中间代码和目标代码的目录2.进入src目录,编写一个main.c文件#include <stdio.h>int main(int argc, char **argv){ printf("hello world\n"); return 0;}3.编写工程顶层目录..转载 2021-02-08 00:17:46 · 1058 阅读 · 0 评论 -
Ubuntu 20.04安装CUDA 11.0、cuDNN 8.0.5、PyTorch 1.7.0
Ubuntu 20.04安装CUDA 11.0、cuDNN 8.0.5、PyTorch 1.7.0转载请注明出处 BooTurbohttps://www.cnblogs.com/booturbo/p/13960935.html因为电脑漏洞的缘故,前几天将Ubuntu18.04换成了20.04,无奈要重装PyTorch等环境,只有CUDA11.0以上版本才支持Ubuntu20.04,所以安装了CUDA11.0、cuDNN8.0.5及PyTorch1.7.0。这里记录下过程,以...转载 2021-02-07 23:03:47 · 1690 阅读 · 0 评论 -
Eigen API汇总 & 简介
// 参考 - http://eigen.tuxfamily.org/dox/AsciiQuickReference.txt// 一个关于Eigen的快速参考// Matlab和Eigen的对应用法// Main author: Keir Mierle// 注释:张学志#include <Eigen/Dense>Matrix<double, 3, 3> A; // 固定大小的双精度矩阵,和Matrix3d一样。Matrix<dou.转载 2021-02-05 23:39:01 · 2447 阅读 · 0 评论 -
使用typedef语句定义数组类型
使用typedef语句定义数组类型https://blog.youkuaiyun.com/pashanhuxp/article/details/39476731https://www.cnblogs.com/Jason-Damon/archive/2011/10/23/2222119.html1. 一维数组类型的定义格式typedef <元素类型关键字><数组类型名>[<常量表达式>];例如:(1) typedef int vector[10];(2) typedef转载 2020-05-28 22:44:28 · 2333 阅读 · 0 评论 -
pybind11 win10 环境搭建及开发流程简介
很好的文章https://developpaper.com/using-pybind11-under-window/原创 2020-05-17 23:04:36 · 4204 阅读 · 0 评论 -
C++ Lambda 函数与表达式
Lambda 函数与表达式C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。Lambda 表达式本质上与函数声明非常类似。Lambda 表达式具体形式如下:[capture](parameters)->return-type{body}例如:[](int x, int y){ return x < y ;转载 2020-05-17 18:11:11 · 384 阅读 · 0 评论 -
C++ allocator与new对比效率使用
C++ std::allocator 与new对比效率使用#include <iostream>#include <vector>#include <string>#define allocate_length 100000int main(){ //allocator比new快的原因:分离分配和初始化这两个操作allocator少执行一步,new则一般执行两次(初始化和赋值); std::clock_t start = 0, end =转载 2020-05-17 00:23:41 · 702 阅读 · 0 评论 -
C++11 中的继承构造函数
C++11 中的继承构造函数一、问题描写叙述二、问题的解决注意:一、问题描写叙述在继承体系中,假设派生类想要使用基类的构造函数,须要在构造函数中显式声明。例如以下:struct A{ A(int i){}}; struct B:A{ B(int i):A(i){}};在这里,B派生于A,B又在构造函数中调用A的构造函数。从而完毕构造函数的传递。又比方例如以下。当B中存在成员变量时:struct A{ A(int i){}}; struct B:A{转载 2020-05-15 21:36:30 · 217 阅读 · 0 评论 -
C++ const用法
尽可能使用const C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量#include<iostream>using namespace std;int main(){ int a1=3; ///non-const data const int a2=a1; ///const data int转载 2020-05-15 19:29:57 · 107 阅读 · 0 评论 -
python/C++ 混合编程__方案调研
背景:将python实现的算法转写为C++后,希望使用python调用C++实现的算法,涉及到python与C++的混合编程。这里对python和C++混合编程的多种方案进行调研。简介众所周之,Python的运行速度是很慢的,特别是大数据量的运算时,Python会慢得让人难以忍受。对于这种情况,“专业”的解决方案是用上numpy或者opencl。不过有时候为了一点小功能用上这种重型的解决方案...原创 2020-05-07 18:53:16 · 2325 阅读 · 0 评论 -
cuda note
查看GPU相关参数环境 win10, visual studio 2019, pycuda 2019.02,CUDA给的示例程序中(路径,D:\NVIDIA\NVIDIA Corporation\CUDA Samples\v10.2\1_Utilities\deviceQuery),deviceQuery.cpp代码可以查看本机的GPU相关参数,可以直接进行编译...原创 2020-05-03 11:26:37 · 218 阅读 · 0 评论 -
pycuda CompileError: nvcc compilation failed
写一段 cuda c 代码, 提交给一个构造函数import pycuda.driver as cudaimport pycuda.autoinit from pycuda.compiler import SourceModuleimport numpy as npa = np.random.randn(4,4)a = a.astype(np.float32)a_gpu = cu...原创 2020-05-03 09:42:05 · 4656 阅读 · 7 评论 -
C++ main() 函数中定义数组闪退__问题分析&解决过程
1. 最近发现了一个问题在将本地txt中的数据读取到vector以后,需要将vector转换为array类型,当程序运行至main()中定义数组的部分,程序会以异常方式退出。经过研究发现这个是c/C++内存分配方式导致的。简化代码(省去从txt中读取vector的部分)如下:#include <iostream> #include "gait_parameters.h"int ...原创 2020-04-13 18:05:19 · 2122 阅读 · 2 评论 -
Visual Studio 2015 update 3各版本下载地址
Visual Studio 2015 update 3各版本下载地址BigbyLong關注2017.09.20 09:51:31字數 1,579閱讀 5,854微软在06月27日发布了Visual Studio 2015 Update 3 。在MSDN中微软也提供下载,而且MSDN的Visual Studio 2015 Update 3与官方免费下载的文件是一致的,只是文件名不一样...转载 2020-04-12 13:22:50 · 2302 阅读 · 0 评论 -
Python Bindings Overview_翻译_未完待续
Python Bindings Overview1. python binding 概览在研究python如何调用C之前,很有必要先研究一下为什么要这样做。python调用C通常有以下几种使用场景:已经有一个经过规模较大、经过良好测试并且稳定的C++库,同时希望可以结合python语言的优势。这样的库通常是一个communication库或者和特定硬件进行对话的库;加速某个模块的pyth...翻译 2020-03-08 19:56:37 · 657 阅读 · 0 评论 -
数据库可能的未来
数据库可能的未来据库相关技术发展趋势:分分合合、合合分分个人技术提升:看这个技术过去是什么样,现在是什么样,未来有可能发展成什么样?上面的业务是什么样?业务是否有生命力?底层的实现细节是什么样?底层未来的发展趋势是什么样的?(硬件最终还是冯诺依曼体系,但是以后可能量子计算机兴起了,会颠覆现有的计算机架构体系;以后mem...原创 2020-02-19 14:37:47 · 314 阅读 · 0 评论 -
Py_BuildValue()
This function is the counterpart toPyArg_ParseTuple(). It is declared as follows:这个函数与函数PyArg_ParseTuple()配对。函数声明如下:PyObject *Py_BuildValue(char *format, ...); It recognizes a set of form...转载 2019-11-22 14:40:45 · 1150 阅读 · 0 评论 -
使用vector实现argsort
template<typename T> vector<int> argsort(const std::vector<T>& array){ const int array_len(array.size()); std::vector<int> array_index(array_len, 0); for (int i = 0; i...原创 2019-11-20 17:51:03 · 642 阅读 · 0 评论 -
vector赋值方法总结
大致有一下几种方法实现用于把一个vector赋值给另一个vector:方法1:vector<int > v1(v2);//声明方法2:使用swap进行赋值:vector<int > v1();v1.swap(v2);//将v2赋值给v1,此时v2变成了v1方法3:使用函数assign进行赋值:vector<int > v1;//声明v1v1.a...原创 2019-11-19 17:43:28 · 19344 阅读 · 0 评论 -
python:让源码更安全之将py编译成so
应用场景 Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效。 python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将产品发布到外部环境的时候,源码的保护尤为重要.准备工作 环境是可为linux/centos,我Window...转载 2019-09-10 15:16:12 · 170 阅读 · 0 评论