[C++] 涉及类的关键词

C++11里面有许多关键词,以前稍微学过,但是不多用。这几天看一些代码,重温一下这些关键词。 位于函数声明尾部 如 datatype function_name() keyword; const const关键词表示该函数不修改类成员变量。 overide overide表示该函数覆盖掉父类同签名函数的声明。没有overide关键词时,父类的同名函数被hide,需要使用 using fatherClass::function_name; 才能调用父类声明的函数。 = 0 该关键词与virtual一起使用,指明该函数为纯虚函数,子类必须定义。 = default 在C++11中,为了解决特殊成员函数的问题,例如程序员定义的默认构造函数X::X() {}效率并不如编译器自动生成的默认构造函数,引入了defaulted特殊成员函数。在特殊成员函数后面加上= default后,编译器便会自动生成较高效率的默认构造函数。 C++中类的特殊成员函数有:Default constructor, Copy constructor, Move constructor (C++11), Copy assignment operator, Move assignment operator (C++11), Destructor. = delete 在C++11中,为了解决成员函数禁用的问题,引入了delete关键词。成员函数禁用的情况主要有两种:(1)我们想禁止默认复制构造、默认复制赋值;(2)我们不希望子类调用父类的某些函数。

A short tour of markdown

俗话说工欲善其事,必先利其器,今天开始用Markdown写一些笔记,首先应当把markdown熟悉一下,掌握大概框架,以后会更加顺畅。 [TOC] 大标题用一个#号 特殊符号 标题:# 黑体:** 斜体:* 分点:“- ” 背景色:` 引用:”> ” 快捷键 加粗:command + B 斜体:command + I 有序列表:command + option + O 无序列表:command + option + U 引用:command + option + Q 表格 typora使用表格只需按格式键入表格第一行,如下: |项目|价格|数量| 然后键入回车就生成下面的表格,而且在typora中可以很方便调整表格 项目 价格 数量 苹果 12000 3 香蕉 2 6 代码块 使用` \ + 所用语言 #include <iostream> int […]

C++: GCC编译选项-O1, -O2, -O3

GCC中这几个编译选项-O1, -O2, -O3是编译器的优化选项,作为使用者,这里仅了解一下三个编译选项对应的优化内容。详细可以参考回答 -O1 (or -O) 在不影响编译速度的前提下,尽量减少代码大小以及运行速度。 -O2 牺牲部份编译速度,使用所有支持的优化算法以提高运行速度(包括-O1的) -O3 除了-O2中的优化算法,还采用向量化算法,以及其余方法提高并行度以及运行效率(流水线、cache等)。 此外,还有其余许多优化编译选项,可见上面的连接。

Mac OS 使用OpenMP

今天做高性能作业,发现OS X的GCC(其实是clang,对编译器了解不多,今天又沉浸在wiki百科的大牛故事中)没有包含openmp,不支持-fopenmp编译选项,所以查了一下MAC OS上使用Open MP的简便方案。参见StackOverflow homebrew安装libomp brew install libomp 编译时增加选项 g++ -Xpreprocessor -fopenmp main.cpp -o main -lomp -std=c++11 -Xpreprocessor选项将参数-fopenmp传递给openmp预处理程序。

数据读取之Endianness

在读取MNIST数据集时,要注意的一个事情是,MNIST的数据存储采用的是high endian(也作big endian,即大端),高位字节存储在低位。big endian通常为网络中传输数据使用的字节序。 与big endian相对的是little endian,通常我们使用的Intel、amd处理器都是使用这种字节序的,两者的区别可见wikipedia。 所以,在加载MNIST数据集时,我们需要将字节序反过来,例如,在Julia中,可以使用下面函数 # convert “0x60ea0000” to “0x0000ea60” ntoh(x)

Tmux 常用命令集锦

来源:Tmux 快捷键 & 速查表 注意:本文内容适用于 Tmux 2.3 及以上的版本,但是绝大部分的特性低版本也都适用,鼠标支持、VI 模式、插件管理在低版本可能会与本文不兼容。 Tmux 快捷键 & 速查表 启动新会话: tmux [new -s 会话名 -n 窗口名] 恢复会话: tmux at [-t 会话名] 列出所有会话: tmux ls 关闭会话: tmux kill-session -t 会话名 关闭所有会话: tmux ls | grep : | cut -d. -f1 | awk ‘{print substr($1, 0, length($1)-1)}’ | xargs kill 在 Tmux 中,按下 […]

Linux 常用命令集锦

服务器后台启动jupyter notebook并记录日志 jupyter notebook > .jupyter/jupyter_notebook.log 2>&1 & [1] 10395 然后讲回显进程ID写入某文件备忘(以适当时候kill掉它,其实也可以在远程网页中把它kill掉): echo ‘10394’ > jupyter_nb/pid.txt 来源:linux上安装anaconda3并启用jupyter notebook远程服务的快速搭建指导

装机笔记

最近装机装了一天,总结为以下几点: 1 如果从Linux装回windows,比较好的办法是使用PE系统(Preinstallation Environment),这次使用了微PE,很好用。PE系统主要用于硬盘格式化与分区,也可以实现ghost等系统备份与恢复。 2 镜像下载:比较好的站点是MSDN,里面是非官方的官方源;另外,由于中大购买了正版windows,中大有windows的ISO资源,还能在校内使用正版windows(需连接校园网)。 3 U盘刻录使用了软碟通,另外也推荐rufus。 4 别外搞什么乱七八糟的ISO以及U盘刻录软件

Linux批量kill进程

来源:https://blog.csdn.net/u012421852/article/details/51194782 命令: $ps -ef | grep “StarCraft” | grep -v “grep” | cut -c 9-15 | xargs kill -9 其中: ps -ef: 静态显示所有进程 grep “StarCraft”: 筛选所有含有StarCraft字眼的进程 grep -v “grep”: 筛选出所有不含grep字眼的进程 cut -c 9-15: 剪取9-15位的字符,这里对应进程ID,对象为ps -ef输出对象 xargs kill -9: 杀掉前面得到的进程

[Python] 关于Python的变量类型

最近在使用python的时候遇到了一个大坑。 python的变量类型问题:可变类型与不可变类型。 前者最常用的就是list,它在一些方面的使用需要注意: 拷贝时要注意reference,shallow,deepcopy三种类型 传参时要注意,如果使用列表作为默认参数,该变量的修改会影响下次函数调用 全局变量要注意,当有歧义时会作为局部变量