05 2019 档案
摘要:一、背景 使用typedef或者using定义类型别名是非常常见的手段,在c++里面,有时为了封装性,模块性等原因还会在某一个namespace或者class内部定义类型别名。 最近在写c++代码的时候,有实现一个模板类,说实话,虽然用c++用了好多年了,但还真没花多少时间去研究模板,因为我始终觉得
阅读全文
摘要:提出问题: 如果有这样一个模板: 对于以下若干种定义方式,哪些是对的(通过编译)? 为了不影响大家分析判断,我把答案颜色调成比较浅的颜色,下面即是答案: 问题解答: 首先,说明一下三个正确的答案。 第一种形式称之为特化定义,其作用是为模板某一特化提供其静态成员的定义,在我们例子中,它仅仅为Test<
阅读全文
摘要:在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适当重载后,(类型名)对象这个对对象进行强制类型转换的表达式就等价于对象.operator 类型名(),即变成对运算符函数的
阅读全文
摘要:在C++的类中有些成员变量初始化和一般数据类型的成员变量有所不同。以下测试编译环境为: 测试代码(g++编译通过): 这些特殊类型的成员变量主要有: 对于==1. 引用==和==2. 常量==,成员变量必须通过构造函数的==参数列表==的方式初始化。例如:上述程序中的r 和 d 变量的初始化。 对于
阅读全文
摘要:总结一下map::erase的正确用法。 首先看一下在循环中使用vector::erase时我习惯的用法: 程序从一个vector中删除值为0的元素,利用了vector::erase函数根据iterator删除某个元素时会返回下一个元素的iterator的性质: http://www.cpluspl
阅读全文
摘要:github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在centos7下编译源码进行安装。 github上有详细的安装说明:https://github.com/google/protobuf/blob/master/src
阅读全文
摘要:说明:这部分内容比较基础,主要是分析几个容易混淆的OpenMP函数,加以理解。 (1)并行区域数量的确定: 在这里,先回顾一下OpenMP的parallel并行区域线程数量的确定,对于一个并行区域,有一个team的线程去执行,那么该分配多少个线程去执行呢? OpenMP的遇到parallel指令后创
阅读全文
摘要:conv_xxx.hpp class convolution { ... ... typedef std::map ConvDtMap; static ConvDtMap conv_dt_map; static ConvDtMap CreateDtMap() { ...
阅读全文