- 博客(17)
- 收藏
- 关注
原创 C++中的list(双向列表)
不能使用默认的std::sort(), 因为std::sort需要随机访问迭代器, 但是list的迭代器不同, list只提供双向迭代器, 所以调用std::sort(lst迭代器1, lst迭代器2)会导致编译错误, 所以我们采用list自带的成员函数sort, 同时支持升序以及降序排序。insert(iterator pos, std::initializer_list<T> ilist): 初始化列表插入 (C++11)search(): 与find()单元素不同, search()用来查找子序列。
2025-05-24 17:44:16
709
原创 C++中的vector
如果采用浅拷贝的话(也就是原有指针的保持), 那么销毁原有空间的时候可能会导致指针悬空, 所以reserve()需要采用深拷贝。当insert()的插入操作导致插入后的vector需要大于原有的capacity,那么系统就会。.reserve(n)与.capacity() 都是关于vector中的元素个数而不是比特数。. 这会导致原有的迭代器指向的位置不再有效, 造成迭代器失效。用其他容器(包含vecor)的迭代器初始化。指定初始大小(使用统一的值初始化)使用初始化列表初始化。
2025-05-19 00:01:30
880
原创 Shell Scripting -- 密码检查器, 备份脚本, 进程信息脚本
调用:./pwcheck.sh pass1 Pass#2 123abc./pwcheck.sh -f passlist.txt./pwcheck.sh -f passlist.txt extra1 Extra#2实现细节: 分别对于文件(getopts处理)和参数(shift处理)实现读取密码实现细节与重点语法:备份脚本 创建目录备份 只在文件修改时创建新备份 维护最大备份数量调用: ./backupdir.sh <source_dir> <backup_dir> <m
2025-05-03 09:39:40
915
原创 内存分配器(myMalloc)-任务分解于实现详解
│├── 1. 初始处理│ ├── 如果 raw_size == 0 ──────────────────────────────> 返回 NULL│ ││ ├── 确保最小分配大小 (≥ 2 * sizeof(header*))│ ││ ├── 向上舍入到8的倍数: raw_size = (raw_size + 7) & (~7)│ │。
2025-05-03 03:41:19
1869
原创 多线程任务实现
这是一个关于多线程的作用,其中包含:1.系统调用;2.线程创建;3.mutex;5.deadlock;voidmain()// write()函数实际上是通过syscall发起真正的调用, 是不经过缓冲区的,立即写出// write在函数实现中其实是通过return syscall(SYS_write, fd, buf, count)实现的// syscall()就是最直接的系统调用,从user mode转为kernel mode。
2025-04-20 00:14:29
783
原创 C++中的string
std:string是 C++ 标准库中定义的字符串类,属于std命名空间,头文件为<string>。它封装了 C 风格字符串(char 数组),提供了更安全、易用的接口。
2025-04-15 09:34:32
999
原创 C++中的模板(函数模板与类模板)
h文件中:// 类模板声明private:public:// 方法声明MyStack();// 构造函数// 重要:包含模板实现文件.tpp实现文件中:// push 方法实现template <typename T> // 要重新写一次。
2025-04-03 10:47:06
299
原创 C++中的初始化列表
初始化列表(Initialization List)是C++语言中用于在构造函数中初始化成员变量的一种特殊语法。它在构造函数的函数体执行之前执行,可以提高效率并实现某些特殊的初始化操作。初始化列表无论写没写都会自动调用;成员变量声明部分得缺省是为了初始化列表服务的;(对于静态对象是无法通过初始化列表初始化的,所以不能缺省)在初始化列表中,调用的顺序与在声明部分一致;
2025-04-03 09:53:37
308
原创 C++中的运算符重载
当一个表达式中有多个不同的运算符时,优先级决定哪个运算符先被应用。运算符含义结合性() [] -> .函数调用、访问成员左结合++ -- (前置)前置自增/自减右结合* / %乘除模左结合+ -加减左结合<< >>位移、流操作左结合< > <= >=比较大小左结合==!等于、不等于左结合&&逻辑与左结合||逻辑或左结合+=-=等赋值运算右结合逗号运算左结合结合性决定当两个优先级相同的运算符相遇时,从哪边开始计算(左 → 右 还是 右 → 左)
2025-04-02 09:34:00
1855
原创 类的六种default成员函数(前四种)
默认构造函数是一个不接受任何参数的构造函数,或者所有参数都有默认值的构造函数。它用于在没有明确初始化值的情况下创建对象。public:// 第一种默认构造函数:不接受任何参数Person() {age = 0;// 第二种默认构造函数:所有参数都有默认值// 注意:这和上面的构造函数不能同时存在于同一个类中,因为它们的在调用时会产生歧义 (调用哪一个?// 这里只是为了演示name = n;age = a;*/
2025-03-29 07:19:39
886
原创 inline:内联
compiler将代码直接插入调用点而不是生成普通的函数调用(即:将参数插入stack,跳转到函数的内存地址...)// 使用inline标注告诉compiler建议该函数采用inline// inline的具体操作// 若inline, 则会直接将函数插入: int res = 5 + 3;如果定义在其他实现文件(.cpp)中, compiler在其他.cpp文件中无法看到, 那么在其他.cpp文件中可能无法inline对应函数。
2025-03-28 07:03:48
316
原创 C++中的类
使用class定义的类,成员默认为私有,继承时也是私有继承使用struct定义的类,成员默认为公有,继承时也是公有继承......//Person.hPublic:int count;
2025-03-28 06:37:17
458
原创 C++中的引用
在上面这段代码中original与alias是完全等效的,也就是修改alias时original也会被修改.引用可以理解为"取别名"
2025-03-28 06:05:28
1479
原创 标准库中的std::cout与std::cin
使用cin.ignore()后可以清楚buffer中的换行符保证下一次的读取不会失误.是 C++ 中用于处理输入流的一个重要函数,它可以帮助跳过或忽略输入缓冲区中的字符。也就是遇到"endl"/程序结束/主动调用flush()才会刷新。2.cin读取数值后读取字符串会遇到问题的原理以及解决办法。3.cout可以连续insert,并且可以接受不同类型。解决方法是在读取字符串前使用。
2025-03-28 04:13:18
438
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅