C++学习笔记
文章平均质量分 69
努力的渣渣_lj
这个作者很懒,什么都没留下…
展开
-
C++学习笔记——结构体和类
结构体和类定义将多个对象放置到一起视为一个整体//定义struct str{ int x; double y;};//声明struct str;//仅有声明只知道str是一个struct但其内部不知道,此时str是incomplete type//但可以定义str* mystr; 所有结构体的指针大小都一样64位机8个字节注意:结构体是翻译单元级一处定义,可以在不同翻译单元里有相同的定义结构体数据成员的定义为隐式,在构造出对象时再定义,在struct的定义中视原创 2022-01-04 14:26:58 · 1347 阅读 · 0 评论 -
C++学习笔记——容器
容器分类序列容器:对象有序排列,用数值进行索引关联容器:对象顺序不重要,用键来进行索引适配器:调整原有容器的行为,使其对外展现新的类型接口或返回新元素生成器:构造元素序列序列容器序列容器模板array:元素个数固定的序列容器vector:元素连续存储的序列容器forward_list/list:基于链表/双向链表的容器deque:vector与list的折中basic_string:提供了对于字符串专门的支持array定义#include <array>s原创 2022-01-19 22:16:54 · 535 阅读 · 0 评论 -
C++学习笔记——泛函算法
泛型算法泛型算法基础知识所在头文件#include <algorithm> //基本算法#include <numeric> //数值算法#include <ranges> //C++20引入方法和泛型算法同名时优先使用方法,泛型算法为满足通用性损失了一部分性能迭代器作为不同数据类型沟通的桥梁 std::sort(std::begin(x), std::end(x))泛函算法分类读算法 给定迭代空间,读取其中元素并运算,不会修改迭代原创 2022-01-19 21:41:32 · 780 阅读 · 0 评论 -
C++学习笔记——适配器和生成器
适配器和生成器类型适配器basic_string_view#inclde <string_view>void fun(std::string_view str){ }int main(){ fun("1,2,3,4"); fun(std::string("1,2,3,4"));}函数fun即可输入c字符串也可输入C++字符串string_view十分廉价,只是一个窗口相当于是一个引用,但不是引用其本身包含很多string的成员函数,不可进行原创 2022-01-19 22:15:45 · 320 阅读 · 0 评论 -
C++学习笔记——C++基础知识
C++基础知识C++编译/链接模型graph LR源文件1-->编译1编译1-->目标文件1目标文件1-->链接源文件2-->编译2编译2-->目标文件2目标文件2-->链接链接-->可执行程序graph LRhello.cpp-->|预处理| main.imain.i-->|编译| main.smain.s-->|汇编| main.omain.o-->|链接| main.exe预处理:将源文件和头文件变为原创 2022-01-04 14:25:33 · 530 阅读 · 0 评论 -
C++学习笔记——输入输出
C++ I/O输入输出输入输出操作格式化/解析:格式化(将数转为字符串)解析(将字符串转为2进制数)缓存:将字符序列存入缓存编码转换:转为Unicode utf8传输:将结果传到终端格式化与非格式化非格式化I/O输入函数:get read geiline gcount输出函数:put write格式化I/O用移位操作符进行输入>> 输出<<//格式化控制char a = 'a';cout.width(10);cout.fill('.');std:原创 2022-01-04 14:23:43 · 720 阅读 · 0 评论 -
C++学习笔记——动态内存
C++动态内存堆内存和栈内存栈(stack)内存特点:更好的局部性,对象自动销毁堆(heap)内存特点:运行期动态扩展,但需要显示释放int* y = new int(2);delete y;int* fun(){ int* res = new int(2); return res;}int main(){ int* y = fun();}//这样的操作可以,因为堆内存不会自动释放,但是如果是返回栈内存的地址就非常危险(返回临时对象的指针)。C++对原创 2022-01-04 14:22:35 · 531 阅读 · 0 评论 -
C++学习笔记——类模板
类模板类模板的定义和声明1. 定义template <typename T>class B{ };2. 声明template <typename T>class B;3. 要点翻译单元级一处定义原则类模板不是类,在被调用时实例化4. 类模板内定义成员函数类模板中定义成员函数注意:类内部使用类名时不用B{},可以直接B{}// 类内定义成员函数:template <typename T>class B{publi原创 2021-12-04 23:03:14 · 836 阅读 · 0 评论 -
C++学习笔记——函数模板
函数模板函数模板的定义和声明1. 定义:template <typename T>void fun(T input){ ...}//或template <class T>void fun(T input){ ...}2. 声明template <typename T>void fun(T input);3. 要点函数模板不是函数,不能直接调用,在编译期编译期对其进行实例化产生相应的函数才能调用两对形参实参,fun(3原创 2021-11-29 12:31:13 · 581 阅读 · 0 评论 -
C++学习笔记——元编程
元编程元编程的定义定义:元编程(Metaprogramming)是指某类计算机程序的编写,这类计算机程序编写或者操纵其他程序(或者自身)作为它们的数据,或者在运行时完成部分本应在编译时完成的工作。(百度上的定义)简单来说就是能在编译器处理一些程序,或进行一些运算就算元编程。形式:模板template <int x>struct M{ constexpr static int bval=x+1;};int main(){ return M<5>原创 2021-11-28 22:51:33 · 887 阅读 · 0 评论