C/C++
文章平均质量分 55
huatian5
run
展开
-
pybind11 工具转换 C++ 接口
介绍pybind11 是一个轻量级的 header-only 库,可以将 C++ 类型暴露给 Python,反之亦然,主要用来将 C++ 接口转成 Python。安装apt install python3-devgit clone https://github.com/pybind/pybind11/git submodule update --init --recursive如果需要交叉编译 arm64 平台,会需要 aarch64-linux-gnu 中的头文件,可以改名或者下载构建原创 2020-10-17 13:34:35 · 606 阅读 · 1 评论 -
C++ 的枚举 enum
C++ 的枚举 enum,用来在有限的范围定义明确命名的常量,通常值是整数类型。每个枚举项都与一个底层类型常量值对应,如果未指明,第一项为 0,其他项均为前一项 +1。enum Color { blue, // 0 green, // 1 red = 6, gray, // 7};有两种风格的枚举型别,C++98 风格的枚举型别和 C++11 风格的型别,两者有很大区别,通常来说后...原创 2019-10-13 23:43:38 · 331 阅读 · 0 评论 -
C++中new和delete之后发生了什么
众所周知,如果我们使用new向系统申请了内存,我们应该使用指针指向这一块内存,俾能我们使用结束后,通过delete该指针释放此内存资源。如果理解只达到这种程度,在内存管理稍微复杂一点时便一定会束手无策。总有一些事情比其他事情更基本一点,现在我来谈谈当我们new和delete之后到底发生了什么。C++中的五种内存...转载 2018-08-03 20:20:15 · 678 阅读 · 0 评论 -
C++11标准之后的移动构造函数和复制构造函数探究
如下一个类的定义,其定义了类的复制构造函数,和移动构造函数class B{public: B() :data(0) //默认构造函数 { cout << "Default constructor is called." << endl; } B(int i) :data(i) //带参数的构造函数 ...转载 2018-09-03 15:26:37 · 1769 阅读 · 0 评论 -
C++ 常用序列操作
copy将 src 的序列 拷贝到 dest 的一个位置move将 src 的序列 移动到 dest 的一个位置fill用 某值 填充 dest 序列transform将 src 的序列 拷贝运算到 dest 的一个位置all_of判断序列所有元素是否 在某操作 全为trueremove移除所有等于 某值 的元素#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;#incl...原创 2018-11-25 21:56:09 · 1424 阅读 · 0 评论 -
C clock() 与 C++ std::chrono::time_point()
clock 函数首先 clock 函数不是精确的时间函数计算的是耗费在当前程序上的时间片数,若有其他进程共享 CPU(多核),计算会包括其他进程的时间片,导致时间过长std::chrono::time_point表示一个时间点然后可以用 std::chrono::duration_cast<>() 来获取时间...原创 2018-12-17 13:28:12 · 1041 阅读 · 0 评论 -
C++ std::tuple
std::tuple是一个可以支持参数集的类模板std::make_tuple 创建一个 tuplestd::tie 创建一个左值引用的 tuplestd::get 获取参数集合某个位置的参数tuple_size 获取参数集数目示例:/*static_assert(表达式, 输出的附加信息)对表达式进行编译时的检查is_constructible&amp;lt;class T, ...原创 2018-12-17 13:29:59 · 248 阅读 · 0 评论 -
C++ static_assert
static_assert(表达式, 输出的附加信息)对表达式进行编译时的检查is_constructible&amp;lt;class T, class ... Args&amp;gt; 能否用Args初始化Tis_trivially_constructible&amp;lt;class T, class ... Args&amp;gt; 能否用Args平凡地初始化T(std::declval 的调用被认为是平凡的)i...原创 2018-12-12 10:58:23 · 399 阅读 · 0 评论 -
《Effective STL》 读书笔记
Effective STL剥离向基类对象的容器中插入派生类对象,派生类对象独有的特性会丢失empty检查容器是否为空用empty而不是size善于使用区间成员函数(assign,etc)v1.assign(v2.begin() + v2.size()/2, v2.end())16.将vector和string传给旧的API(c api)vector元素是连续存储在内存中的if (...原创 2019-02-21 21:26:48 · 233 阅读 · 0 评论 -
vector 存储指针
当 vector 存储指针时,释放内存应该对每个元素进行 delete,然后 clear(),将容器元素清空#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;iostream&gt;#include &lt;string&gt;#include &lt;set&gt;原创 2019-03-05 17:13:29 · 3892 阅读 · 0 评论 -
《程序员的自我修养—链接、装载与库》 目标文件
可执行文件(目标文件)的格式:在 Windows 下都按照 PE-COFF 格式存储,Linux 下按照 ELF 格式存储。程序源代码被编译后主要分为两种段:程序指令和程序数据。代码段属于程序指令,而数据段和 .bss 段属于数据段。.data 段保存的是已经初始化了的全局变量和局部静态变量。.rodata 段保存的是只读数据,一般是程序里面的只读变量和字符串常量。.bss 段保存的...原创 2019-04-29 22:05:48 · 206 阅读 · 0 评论 -
一种跨平台的C/C++动态库的符号隐藏方式
源地址:http://blog.guorongfei.com/2018/04/11/symbol-visibility/ <h1 id="什么是符号隐藏"><a href="#什么是符号隐藏" class="headerlink" title="什么是符号隐藏"></a>什么是符号隐藏</h1><p>在同一个文件中,如果有一些函...转载 2019-07-05 14:31:47 · 3457 阅读 · 1 评论 -
C++ auto类型说明符
编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚知道表达式的类型。然而要做到这一点并非那么容易,有时候甚至根本做不到。为了解决这个问题,C++11标准引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型。与原来那些只对应一种特定类型的说明符不同,auto让编译器通过初值来推算变量类型。显然,auto定义的变量必须要有初始值。使用auto具有以下几点好处:...转载 2018-07-19 21:12:19 · 821 阅读 · 0 评论 -
C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
源地址:[here](https://www.cnblogs.com/xudong-bupt/p/3570304.html) 1.虚函数(impure virtual) C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。 子类可以重写父类的虚函数实现子类的特殊化。 如下就是一个父类中的虚函数:class A{public...转载 2018-07-19 15:33:13 · 145 阅读 · 0 评论 -
C语言与C++语言的常用输出格式控制
let me doC语言(C++通用)1.printf(" ");%d 输出10进制整数格式 int类型%u 输出无符号整数 unsigned类型%c 输出字符 char类型%ld 输出长整数类型 long类型 另有范围更大的%l原创 2016-05-09 21:16:29 · 1121 阅读 · 0 评论 -
UVa 101 - The Blocks Problem(STL)
The Blocks Problem Background Many areas of Computer Science use simple, abstract domains for both analytical and empirical studies. For example, an early AIstudy of planning and robot原创 2016-04-29 22:24:08 · 716 阅读 · 0 评论 -
UVA 156 - Ananagrams (map)
Ananagrams Most crossword puzzle fans are used to anagrams--groupsof words with the same letters in different orders--for exampleOPTS, SPOT, STOP, POTS and POST. Some words however do not原创 2016-04-29 22:23:52 · 649 阅读 · 0 评论 -
STL 的题目练习(HDU1263)(HDU1075)(HDU 1004)(ZOj 2724)
现在STL对我熟了,我对它还不熟,加油啊 这种循环输入的不清空容器则要在主函数中定义…… map容器运用STL,由于map存储是按KEY值的字母顺序排序,所以这里呢省去了排序的步骤HDU 1263#include#include#include#includeusing namespace std;int main(){ map > p;原创 2016-04-19 21:48:12 · 1462 阅读 · 1 评论 -
STL的学习(C++primer)
容器部分主要由头文件vector>,,,,,和组成。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件的对应关系。序列式容器向量(vector) 连续存储的元素列表(list) 由节点组成的双向链表,每个结点包含着一个元素双端队列(deque) 连续存储的指向不同元素的指针所组成的数组容器适配器栈(stack) 后进先出的值原创 2016-04-19 15:41:38 · 669 阅读 · 0 评论 -
C与C++中很少犯的错误,犯了后却很难找出的错误
1.continue,break类的错误(HDU1877):#includeusing namespace std;int main(){ int a,b,m,sum; while(cin>>m,m) { int p[100]={0}; cin>>a>>b; sum=a+b; if(!sum)//原创 2016-04-05 21:35:24 · 3705 阅读 · 0 评论 -
HDU-5980 Find Small A(位运算)
Find Small ATime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 309 Accepted Submission(s): 157Problem DescriptionAs is known to all,原创 2016-11-11 15:46:36 · 973 阅读 · 0 评论 -
C与C++中的常用提高程序效率的方法
1.用a++和++a及a+=1代替a=a+1,用a--和--a及a-=1代替a=a-1 通常使用自加、自减指令和复合赋值表达式(如a-=1及a+=1等)都能够生成高质量的程序代码,编译器通常都能够生成inc和dec之类的指令,而使用a=a+1或a=a-1之类的指令,有很多C编译器都会生成二到三个字节的指令。2.用内联函数(inline)代替简单的函数 若把一个函数定义为内联原创 2016-04-07 10:23:27 · 3398 阅读 · 0 评论 -
C++文件读写详解(ofstream,ifstream,fstream)
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:#include &amp;lt;fstream&amp;gt;ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读区到内存...转载 2018-07-24 20:14:32 · 388 阅读 · 0 评论 -
C++ namespae
namespace是C++为了解决命名冲突的命名空间 例:#include <cstdio>namespace A{ char c = 'a';}namespace B { char c = 'b';}int main(){ printf("%c\n",A::c);}如果namespace后面不加名字,则只能在当前文件使用,调用属性时直接...原创 2018-07-19 10:25:02 · 333 阅读 · 0 评论 -
C与C++中的运算符和常用函数的使用
运算符逻辑运算符& 位逻辑与 如果b是奇数,那么结果就为1;反之偶数,则为0.| 位逻辑或- 位逻辑反^ 位逻辑异或如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0快速比较两个值判断两个int数字a,b是否相等,你肯定会想到判断a - b == 0,但是如果判断原创 2016-05-20 21:54:36 · 1425 阅读 · 0 评论