MinGw配置(Windows电脑)
安装MinGW相比在 Linux 平台上安装 GCC 编译环境,在 Windows 平台上安装 MinGW 是比较简单的,只需经历以下几个过程。 打开 MinGW 官网(点击即可进入官网),下载 MinGW 安装包。 下载完成后,会得到一个名为 mingw-get-setup.exe 的安装包,双击打开它,可以看到如下的对话框: 直接点击“Install”,进入下面的对话框,自定义安装位置,然后选择continue 进入安装 MinGW 配置器的界面。安装完成之后,得到一个名为 “MinGW Installer Manager” 的软件,借助它,可以随时根据需要修改 GCC 编译器的配置。点击“continue”,会自动弹出配置界面,如下所示: 为使 GCC 同时支持编译 C 语言和 C++,需勾选图中标注的 2 项。我们知道,GCC 还支持其它编程语言,读者可借助此配置器,随时实际需要安装自己需要的编译环境。勾选完成后,在菜单栏中选择Installation -> Apply Changes,弹出如下对话框: 选择“Apply”。然后耐心等待,直至安装成功 ...
NotePad++配置
准备工作安装MinGW并添加到环境变量: 点此查看步骤(建议右键选择在新窗口中打开) 创建一个cpp文件并写一段测试代码 点击顶部菜单栏的“运行”或者直接按F5 输入一下宏定义命令 1cmd /k pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & PAUSE & EXIT 点击运行即可 建议选择“保存”按键,将宏定义保存到快捷键,比如ctrl + alt + n(跟vscode的coderunner插件一样的快捷键),下次运行直接快捷键即可 cmd /k:打开 cmd 控制台,运行完程序让其停留而不自动关闭。 pushd "$(CURRENT_DIRECTORY)":将工作路径更换到源文件所在的路径,例如’pushd E:\kkk’相当于 cmd 中先e:再cd kkk,这条 ...
VsCode_C++环境搭建(Mac m1芯片版本)
文章转载自百叶的自留地(2021年8月),非商业用途,侵删 文末放了我的三个json文件配置,可以参考。 1.下载VS codeVS code已针对m1 芯片进行了适配,去官网下载VS code Apple Silicon版并安装。 2.确保clang已安装在终端里输入clang --version查看是否已安装,若未安装,输入xcode-select --install读完条款输入agree安装即可。 3.下载扩展一共有三个扩展需要下载。1.C/C++2.C++ Intellisense3.CodeLLDB4.Chinese(中文插件,可选) 4.新建cpp文件这里直接采用微软官方文档里的代码。 12345678910111213141516#include <iostream>#include <vector>#include <string>using namespace std;int main(){ vector<string> msg {"Hello", "C+ ...
用Calibre实现Kindle带封面传书
Kindle如何带封面传书软件:Calibre Kinlde传书以往分为两种方式,一种是邮件传输,另一种是数据线连接电脑传输 邮件传书 每部Kindle都有自己的邮箱,通过附件的方式给Kindle邮箱发送邮件就可以传书 但是Kinlde在2022年8月份就宣布停止mobi格式书籍的邮箱传输,并只支持epub Kindle机器本身只支持azw格式,Kindle可以对mobi进行转换,成为azw格式 通过邮件传书,无论是mobi还是epub格式都是先通过线上转换,变成azw格式之后发送到kindle去的,而mobi格式通过邮箱传输可以保留原来的封面,epub格式则会失去封面,用邮箱传书的话要带封面只能用mobi格式 亚马逊以后将停止kindle邮箱传书,只能选择数据线传书 数据线传书 mobi的书籍通过数据线传输之后会丢失封面,epub则因为Kindle硬件无法进行格式转换,无法读取。 网络上获取的资源一般都是mobi格式以及epub格式的 以下是通过数据线带封面传书的步骤 如果书籍带有封面,并且不需要更换,跳过2、3步骤,如果书籍没有封面或者封面不官方和美观,执行2、3步骤 将需要 ...
Linux_历史命令
Linux会保存用户的历史指令历史指令保存在用户目录下的.bash_history文件(历史记录文件)中,并且每条指令都用时间戳的形式记录了执行时刻 当用户通过shell进入Linux系统时,Linux系统会先将.bash_history中的保存的之前的历史指令读取到历史记录缓存区中,在用户正常退出shell之前,执行的所有指令也会先记录在缓存区中,当用户正常退出shell(exit或者control+d)时,shell进程会自动将历史记录缓存区中的所有历史记录写入到.bash_history中 查看历史缓冲区1history #查看历史记录缓存区中保存的历史指令 从最开始到现在为止 通过键盘上下键快捷查看历史缓冲区 定量查看历史缓冲区的历史指令1history <数字> #查看缓冲区中最近的n条历史指令 手动写入.bash_history如果执行了几条指令,比如执行两次ls和ll,查看一下历史缓存区 再查看.bash_history,发现没有记录在里面,因为历史记录保存在了历史缓存区,当退出shell的时候才会自动从缓存区写入.bash_history ...
C++_map&pair类
关联式容器 STL中的容器分为序列式容器(vector、list、array、deque、forward_list)和关联式容器(map、multimap、set、multiset) 序列式容器的特点是保存元素时只保存元素本身,不会对存储的元素进行自动排序,元素排列的顺序取决于存储它们的顺序 关联式容器在存储元素的时候还会存储另一个跟元素相关的值,称为“键”,元素和它的“键”作为一个整体“键值对”存储在关联式容器中,关联式容器自动根据“键”的大小将元素作升序排序;另外,可以根据元素的“键”找到对应的元素。 pair类型 pair是C++STL标准库中的一个类模版,定义在头文件 <utility> 中 是专门用来表示“键值对”的类型
C++_auto关键字
auto关键字(类型推导) 当STL的模板类型实例化的时候,如果实例化的类型是模版类型,那么使用迭代器是会报错的 比如 123456789template<class T>void a(){ vector<int> i;//vecter的实例化类型是int vector<T> v;//vector的实例化类型是模版类型T vector<int>::iterator I = i.begin();//正确 veector<T>::iterator V = v.begin();//报错 } 因为在模板参数T实例化之前,模板类型为int的vector明确了自己的类型就是int,故迭代器可以根据类型执行相应的关于空间的操作。而模版类型为T的vector尚不知道T究竟是什么类型,所以迭代器无法通过类型来执行操作 auto关键字是在程序编译时自动推导出变量的类型,可以很自然地和泛型编程结合而不用去提前考虑变量的类型 1234567template<class T>void a() ...
C++_所有函数都可直接调用
无论函数是否有返回值,都可以直接调用 并不是说有返回值的函数在调用的时候必须用一个变量去承接返回值
C++_vector常用用法
常用用法 删除元素
C++_模板不支持分离编译
C++模板不支持分离编译!!一般情况下,自定义变量和函数的时候,在头文件中声明,在源文件中实现,在链接过程中会将分离开的声明和实现进行链接起来 但是==模板变量和函数是不支持分离编译,也就是说模板的定义(声明+实现)必须在同一个文件里==(一般建议在声明模板的地方定义模板,也就是头文件中) 模板是不支持声明和定义放到两个文件中的 这就是为什么当模版是分离编译的时候,在main文件中包含模版的头文件的时候,编译时会报错:函数为定义。因为无法将模版的声明和实现进行链接
C++_模板
C&C++中的模板是泛型编程的基础 泛型编程是一种编程风格,其中算法以尽可能抽象的方式编写,而不依赖于将在其上执行这些算法的数据形式。算法与数据形式分离。 C++中模板分为两种,一种是模板函数,一种是模板类。 使用模板参数构建出的函数就是模板函数,使用模板参数构建出的类就是模板类。 (所以可以看出重要的地方是模板参数) 在写了一个模板函数之后,编译时,编译器会根据用户给出的模板参数的实例化来自动生成相应的函数(类模板同理 模板的使用体现了C++程序的复用性和多态性 (函数重载也体现了多态性,但是函数重载是比较有限的,能覆盖的不同参数是有限的) 多态性:静态多态(模板)(编译时多态),动态多态(继承)(运行时多态) ==模板参数分为三类== 类型参数 通过 关键字 typename 或者 class 引入(两者基本上是等价的) 非类型参数 模板参数不局限于类型,类型的值也可以作为模板参数,通过 关键字 值的类型 引入 目前C++只支持 整形 / 枚举类型 / 指针类型(可以是原始数据类型的指针、派生数据类型的 ...
有些语句后面不用加分号
if(){} while(){} for(){} int xx(){} if语句、while循环、for循环、函数定义是,{}是语句的一部分,后面不用跟分号 函数的只声明不定义的时候需要语句最后要加分号
size_t
size_t在各种头文件中都有定义 <stddef.h>, <stdio.h>, <stdlib.h>, <string.h>, <time.h>, <wchar.h> size_t类型表示C中==任何对象能达到的最大长度==,它是无符号整数数据类型 size_t并不是一个具体的大小的数据,而是要看系统,系统的对象长度最大为多少,size_t的大小就是多少。所以size_t类型方便在于系统之间移植使用。 比如在32位系统上,size_t类型就是 unsgned int 类型的typedf(即别名),也就是32位无符号整数;在64位系统上,size_t类型被定义为unsigned long long的typedef。 通常在用做下标或者长度变量时建议使用size_t,因为它始终是无符号的数。