- 博客(12)
- 收藏
- 关注
原创 链表的初认识
链表的核心是节点 + 指针,通过指针串联零散内存,插入 / 删除效率高,访问效率低;手动实现链表需重点关注内存释放(析构函数)和边界条件(空链表、删除头节点);实际开发中优先使用 STL 的std::list,无需手动管理内存,接口丰富且高效。
2025-12-18 21:16:23
282
原创 结构体的初认识
重载==<<等运算符,让结构体支持 “类原生类型” 的运算(如比较、输出)。cpp运行int x;int y;// 重载 + 运算符:两个点相加// 重载 == 运算符:判断两个点是否相等// 重载 << 运算符:直接输出结构体(全局函数)return os;// 输出:(4, 6)cout << "p1 和 p2 相等" << endl;} else {cout << "p1 和 p2 不相等" << endl;// 执行此分支return 0;
2025-12-15 16:52:37
397
原创 迭代器的初认识
cpp运行// 1. 普通迭代器(可读可写)// 指向第一个元素(10)// 2. 常量迭代器(只读,不可修改元素)// cbegin() 返回const_iterator// 3. 反向迭代器(从尾到头遍历)// 指向最后一个元素(50)return 0;迭代器是 STL 的 “灵魂”,核心是为不同容器提供统一的访问接口。理解 “左闭右开” 的遍历范围;区分不同容器的迭代器类型(尤其是随机访问 vs 双向 / 前向);规避迭代器失效问题;结合auto。
2025-12-12 08:56:03
825
原创 string*的使用
string*必须指向已存在的string对象(避免野指针),常见初始化方式:cpp运行// 1. 定义string对象,指针指向它(最常用)// &取str的地址,赋值给string*指针// 2. 指针数组:存储多个string对象的地址(你代码中的核心场景)// 指针数组,每个元素是string*// 3. 动态分配string对象(较少用,需手动释放)// 堆上创建string对象,p2指向它return 0;string*
2025-12-11 17:25:09
245
原创 指针的初认识
c运行// 普通变量int a = 10;// 指针变量p:存储a的地址(&为取地址符)printf("变量a的值:%d\n", a);// 输出:10printf("变量a的地址:%p\n", &a);// 输出:0x7ffeefbff5c4(示例地址)printf("指针p的值(a的地址):%p\n", p);// 输出:0x7ffeefbff5c4printf("指针p指向的值(*p解引用):%d\n", *p);// 输出:10return 0;&a。
2025-12-10 22:58:12
371
原创 cin与cout的初认识
场景用法要点简单输出cout << 数据 << '\n'(优先用\n复杂格式化输出结合<iomanip>操纵符(fixedsetwleft等)简单输入(无空格)cin >> 变量(自动跳过空白字符)含空格的字符串输入getline(cin, 字符串),注意先清空换行符高频输入输出加优化效率输入错误处理用cin.fail()检查,重置状态,清空缓冲区cincout是 C++ 原生的输入输出方案,核心优势是类型安全(编译期检查)和可扩展性。
2025-12-09 22:09:57
783
原创 for循环的认识与使用
/ 步长为2,输出0、2、4(跳步循环)i < 5;i += 2) {// 输出:0 2 4// 步长为-3,输出9、6、3(反向跳步)i >= 3;i -= 3) {// 输出:9 6 3int i = 0;// 省略初始化(i已提前定义)for (;i < 5;i++) {// 输出:0 1 2 3 4C++11 及以上标准中,for循环内定义的变量(如int i)作用域仅限于循环内,避免变量污染:cpp运行i < 3;i++) {// 合法:i在循环内可见。
2025-12-08 20:58:23
848
原创 指针的引用
指针的引用」是指针变量的别名—— 它不是指向变量的引用,而是指向「指针本身」的引用。类型*& 引用名 = 指针变量名;*&连写,明确是 “指针的引用”)类型语法核心作用适用场景普通指针T*操作指针指向的「目标变量」间接访问 / 修改目标数据指针的引用T*&操作「指针本身」(别名)修改指针指向、避免指针拷贝普通引用T&操作「变量本身」(别名)直接访问 / 修改变量(替代指针)想改「目标数据」→ 用普通指针(T*)或普通引用(T&想改「指针本身」→ 用指针的引用(T*&
2025-12-08 19:36:55
556
原创 vector容器的初认识
vector包含<vector>头文件;用合适的方式初始化vector;用[]at()访问元素,用pop_back()增删元素;用size()获取长度,无需手动释放内存。
2025-12-07 21:31:15
436
原创 动态数组的初认识
new int[n]→ 元素值是随机垃圾值(堆区未初始化);→ 所有元素初始化为 0(加括号触发零初始化);自定义初始化:需循环赋值(C++ 不支持直接初始化动态数组,需手动循环)。// 元素是随机值(比如 0xcccccccc)// 元素全为 0([0, 0, 0])// 自定义初始化:给前 3 个元素赋值 1、2、3i < 3;i++) {// 最终 arr2 = [1, 2, 3]特性动态数组(new[]静态数组(长度确定时机运行时(变量n编译时(常量,如 10)内存位置。
2025-12-07 21:02:25
531
原创 set的初认识
使用set必须包含头文件<set>,且需指定元素类型(如intstring// 简化写法,否则需写 std::set// 定义一个存储整数的 set(默认升序排序)set<int> s;默认set// 降序排列的 set// 输出:5 3 2 1set自动去重 + 自动升序排序。题目场景:统计不同元素个数 → 插入set后返回size()。时间复杂度:插入、查找、删除均为 O (log n),适合 n≤1e5 的场景(远超题目要求的 n≤1000)。
2025-12-05 21:53:02
660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅