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&C++中的模板是泛型编程的基础 泛型编程是一种编程风格,其中算法以尽可能抽象的方式编写,而不依赖于将在其上执行这些算法的数据形式。算法与数据形式分离。 C++中模板分为两种,一种是模板函数,一种是模板类。 使用模板参数构建出的函数就是模板函数,使用模板参数构建出的类就是模板类。 (所以可以看出重要的地方是模板参数) 在写了一个模板函数之后,编译时,编译器会根据用户给出的模板参数的实例化来自动生成相应的函数(类模板同理 模板的使用体现了C++程序的复用性和多态性 (函数重载也体现了多态性,但是函数重载是比较有限的,能覆盖的不同参数是有限的) 多态性:静态多态(模板)(编译时多态),动态多态(继承)(运行时多态) ==模板参数分为三类== 类型参数 通过 关键字 typename 或者 class 引入(两者基本上是等价的) 非类型参数 模板参数不局限于类型,类型的值也可以作为模板参数,通过 关键字 值的类型 引入 目前C++只支持 整形 / 枚举类型 / 指针类型(可以是原始数据类型的指针、派生数据类型的 ...
C++_模板不支持分离编译
C++模板不支持分离编译!!一般情况下,自定义变量和函数的时候,在头文件中声明,在源文件中实现,在链接过程中会将分离开的声明和实现进行链接起来 但是==模板变量和函数是不支持分离编译,也就是说模板的定义(声明+实现)必须在同一个文件里==(一般建议在声明模板的地方定义模板,也就是头文件中) 模板是不支持声明和定义放到两个文件中的 这就是为什么当模版是分离编译的时候,在main文件中包含模版的头文件的时候,编译时会报错:函数为定义。因为无法将模版的声明和实现进行链接
有些语句后面不用加分号
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,因为它始终是无符号的数。
JB全家桶快捷键&操作
运行程序⌃ + R ctrl + R 格式化代码⌘ + ⌥ + L win + alt + L 批量更改变量、函数名称光标移动到变量、函数名称上 ⇧ + F6 Shift + F6 CLion_vscode风格代码高亮插件vscode dark原版风格 vscode dark plus 风格(个人认为黑色不如上面更纯粹,高亮也稍逊一点) CLion_vscode风格代码样式(用于格式化样式)Microsoft风格(vscode 舒服😌 设置解引用符号*的位置 第一种舒服😌 设置背景 如果在CLion外部更改了项目中的文件的属性比如我在CLion外部将原本的main.c改名成为了GuessingGame.c clion会报错 发现CmakeLists.txt文件包含的文件是aaa main.c而不是aaa GuessingGame.c,说明并没有将GuessingGame.c包含在项目里 将第6行括号里的main.c改成GuesingGame.c即可 注意,如果不是替换掉main.c,而只是添加GuessingGame.c的话,C ...
条件编译
条件编译-百度百科 条件编译- C语言中文网
库文件&静态库&动态库
库文件-百度百科 库、动态库和静态库(.dll,.so,.lib,.a)知乎 浅谈静态库和动态库_知乎
C语言为何不支持重载
C语言为什么不支持函数重载?c++又是如何支持的?




