
C++ 语言
文章平均质量分 85
C++ primer,深度探究 C++ 对象模型等 C++ 书籍的阅读笔记
攻城狮之心
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 复习总结记录十
stack 文档介绍1、 stack 是容器适配器,专用于后进先出的操作,只能从容器尾端进行元素插入和提取2、 容器适配器是对特定类封装作为底层容器,并提供一组特定的成员函数3、 stack 底层容器可以是任何标准的容器类模板或一些其他特定的容器类,这些容器类应支持以下操作empty 判空操作back 获取尾部元素操作push_back 尾部插入元素操作pop_back 尾部删除元素操作。原创 2025-01-24 16:42:11 · 1175 阅读 · 0 评论 -
C++ 复习总结记录九
List 相关文档1、List 在任意位置进行插入和删除的序列式容器 O(1) ,且该容器可前后双向迭代2、List 底层是带头双向循环链表,每个元素存储在互不相关的独立节点中,通过指针指向其前一个元素和后一个元素3、List 与 Forward_List 相似,主要不同在于 Forward_List 是单链表,只能正向迭代更简单高效4、与其他的序列式容器相比 ( array,vector,deque ),List 通常在任意位置进行插入、移除元素的执行效率更好。原创 2025-01-24 16:40:33 · 1393 阅读 · 0 评论 -
C++ 复习总结记录八
相关文档介绍1、vector 是表示可变大小数组的序列容器,它的大小可以动态改变,且大小会被容器自动处理2、像数组一样,vector 也采用的连续存储空间来存储元素。可以使用下标对 vector 元素进行高效访问3、与其它动态序列容器相比(deque,list and forward_list), vector 在访问元素时更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低(constructor)构造函数声明 接口说明vector();无参构造。原创 2025-01-21 10:03:11 · 1000 阅读 · 0 评论 -
C++ 复习总结记录七
1、标准库中的 string 类2、string 类的模拟实现3、写时拷贝。原创 2025-01-21 08:09:14 · 853 阅读 · 0 评论 -
C++ 复习总结记录六
STL ( standard template libaray - 标准模板库 ),是 C++ 标准库的重要组成部分,是一个包罗数据结构与算法的软件库STL 版本【原始版本】Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费,唯一条件是也需要向原始版本一样做开源使用。HP 版本 – 所有 STL 实现版本的起源。原创 2025-01-08 23:19:07 · 1065 阅读 · 0 评论 -
C++ 复习总结记录五
int main()// new/delete 和 malloc/free 最大区别是 new/delete对于[自定义类型]除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎一样// Cfree(p3);delete p4;free(p5);return 0;原创 2025-01-08 23:17:49 · 997 阅读 · 0 评论 -
C++ 复习总结记录四
1、构造函数其它要点2、static 成员3、友元4、内部类5、匿名对象6、拷贝对象时编译器的优化。原创 2025-01-07 19:03:54 · 1003 阅读 · 0 评论 -
C++ 复习总结记录二
/ 类体:由成员函数和成员变量组成// 注意分号class 是定义类的关键字,ClassName 是类名,{} 中是类主体,注意类定义结束时,后面分号不能省略类体中内容称为类成员:类中变量称为类的属性或成员变量;原创 2025-01-04 15:08:11 · 722 阅读 · 0 评论 -
C++ 复习总结记录一
C 语言是结构和模块化的语言,适合处理较小规模的程序。对于复杂问题,需要高度抽象和建模时,C 则不合适。为了解决问题 20 世纪 80 年代, 计算机界提出 OOP ( object oriented programming 面向对象) 思想。1982 年 Bjarne Stroustrup 在 C 基础上引入并扩充了面向对象概念,为表达该语言与 C 渊源关系,命名为 C++原创 2025-01-04 15:07:10 · 973 阅读 · 0 评论 -
C++ 浅谈之 AVL 树和红黑树
C++ AVL 树和红黑树原创 2023-02-17 15:53:40 · 507 阅读 · 1 评论 -
C++ 浅谈之二叉搜索树
C++ 二叉搜索树原创 2023-02-15 20:19:21 · 561 阅读 · 28 评论 -
C++ 浅谈之 STL Deque
STL Deque 底层实现原创 2023-02-09 22:50:01 · 300 阅读 · 5 评论 -
C++ 浅谈之 STL List
STL List 底层实现原创 2023-02-09 22:48:35 · 409 阅读 · 2 评论 -
C++ 浅谈之 STL Vector
STL Vector 底层实现原创 2023-02-09 19:35:41 · 799 阅读 · 33 评论 -
C++ 浅谈之空间配置器
C++ STL 组件 空间配置器原创 2023-02-08 14:20:01 · 350 阅读 · 6 评论 -
C++ 浅谈之适配器
C++ STL 组件 适配器原创 2023-02-07 10:43:39 · 706 阅读 · 9 评论 -
C++ 浅谈之 STL 组件仿函数
C++ STL组件 仿函数原创 2023-02-07 10:42:04 · 389 阅读 · 2 评论 -
C++ 浅谈之右值引用,转移语义和完美转发
右值引用,转移语义和完美转发原创 2023-02-05 16:39:49 · 717 阅读 · 31 评论 -
C++ 浅谈之左值、纯右值、将亡值
左值,纯右值,将亡值原创 2023-02-03 09:32:05 · 653 阅读 · 44 评论 -
C++ 浅谈之智能指针 shared_ptr 循环引用
智能指针 shared_ptr 循环引用原创 2023-02-02 10:33:59 · 1214 阅读 · 42 评论 -
C++ 浅谈之智能指针 auto_ptr 和 unique_ptr 对比
智能指针 auto_ptr 和 unique_ptr 对比原创 2023-02-01 11:42:36 · 618 阅读 · 33 评论 -
C++ Primer 第六章 函数 复习
C++ Primer 第六章 函数6.1 函数基础函数是一个命名了的代码块,通过函数执行相应的代码。可以有 0 个或多个参数,可重载/* 编写一个求数阶乘的程序*/int fact(int val){ int ret = 1; //局部变量,用于保存计算结果 while(val > 1){ ret *= val --; } return ret;}/* 函数调用: 用实参初始化函数对应的形参(类型,个数需要匹配) 主函数暂时中断,原创 2022-03-14 20:36:56 · 1145 阅读 · 0 评论 -
C++ Primer 第五章 复习
C++ Primer 第五章5.1 简单语句 & 条件语句ival + 5 ; //一条没有实际用处的表达式语句cout << ival ; //有用的表达式语句; //空语句//重复输入数据,直到文件末尾或输入的值等于 soughtwhile(cin>>s && s!=sought); //语法需要ival = v1 + v2;; //正确,第二个分号表示一条多余的空语句while(iter != svec.end()); //出现糟糕原创 2022-03-12 15:08:37 · 700 阅读 · 0 评论 -
C++ primer 第十三章复习 13.1
C++ primer 第十三章复习13.1 拷贝,赋值与销毁类 有五种特殊成员函数控制对象拷贝,移动,赋值和销毁拷贝构造函数拷贝赋值运算符移动构造函数移动赋值运算符析构函数上述操作称为拷贝控制操作,若一个类没有定义这些函数,编译器会自动生成缺失的函数拷贝构造函数拷贝构造函数通常不应该是 explicit ( explicit 不可以隐式初始化对象)class Foo{public: Foo(){} //构造函数 Foo(const Foo&){} //拷贝构造函数原创 2022-01-21 13:04:13 · 488 阅读 · 0 评论 -
C++ primer 复习 第三章 字符串,向量和数组
第三章 字符串,向量和数组3.1 命名空间 using头文件不应该包含 using 声明,因为会拷贝到其它文件中命名空间 using 声明 :using namespace::name;#include<iostream>int main(){ std::cout << "Enter two number" << std::endl; int v1, v2; std::cin >> v1 >> v2; std::cout &原创 2021-11-29 22:46:11 · 638 阅读 · 0 评论 -
C++ primer 复习 第二章变量和基本类型 2.1 C++ 数据类型
C++ primer 复习 第二章 变量和基本类型2.1 C++ 数据类型C++的算术类型与操作系统的位数有关布尔类型含义最小尺寸说明bool布尔未定义,一般为一个字节非零值为 True,零为 False字符型类型含义最小尺寸说明char字符8位1个char空间应确保可存放机器基本字符集中任意字符字符对应的数字wchar_t宽字符16位用于扩展字符集,确保可以存放机器最大扩展字符集中任意一个字符char16_t原创 2021-10-31 15:08:24 · 258 阅读 · 0 评论 -
C++ primer 第十二章 复习
C++ primer 第十二章12.1.1 动态内存与智能指针全局对象:在程序启动时分配,程序结束时销毁局部对象:进入其作用域时被创建,离开作用域销毁(栈对象)静态对象:在第一次使用之前分配,程序结束销毁动态内存和智能指针动态内存(堆)的管理是通过一对运算符来完成的new:在动态内存中为对象分配空间并返回一个指向该对象的指针delete:接受一个动态内存的指针,销毁该对象,释放相关内存为了更安全的使用内存,C++11提供了两个智能指针shared_ptr:允许多个指针指向同一个对象u原创 2022-03-11 20:22:43 · 442 阅读 · 0 评论 -
C++ primer 第十章复习
C++ primer 第十章10.1 泛型算法概述泛型:可以用于不同类型的容器和不同类型的元素容器定义的操作非常有限,其它操作(例如:查找特定元素,替换或删除某一个元素,排序等)都是通过一组泛型算法实现的大多数算法都定义在头文件 algorithm 中,头文件 numeric 还定义了一组算法int val = 42; //将查找的值//如果在vec中找到想要的元素,则返回结果指向它//否则返回结果为 vec.end() std::vector<int> vec;auto r原创 2022-03-07 20:59:55 · 739 阅读 · 0 评论 -
C++ primer 第九章复习 - 1
C++ primer 第九章9.1 顺序容器概述容器是容纳特定类型对象的集合,每种容器都是性能和功能的权衡C++ 容器分为顺序容器,关联容器顺序容器的元素排列由元素添加到容器的次序决定若不确定使用哪种容器,可在程序中只使用 vector 和 list 的共同操作:使用迭代器,不使用下标,避免随机访问,这样在必要时替换很方便9.2 容器库概览容器类型上的操作形成了一种层次:某些操作是所有容器类型都支持的,另外一些操作仅针对顺序容器,关联容器或无序容器,还有一些仅适用于小部分容器容器均定义为原创 2022-03-01 10:10:36 · 750 阅读 · 0 评论 -
C++ primer 第十一章复习
C++ primer 第十一章11.1 使用关联容器关联容器:元素是按关键字来保存和访问的顺序容器:元素是按它们在容器中的位置来顺序保存和访问的使用关联容器使用 MAP/* 统计每个数字在输入中出现的次数*/std::map<int, size_t> word_cout;int number;while (std::cin >> number){ ++word_cout[number];}for (const auto& w : word_cou原创 2022-03-09 18:55:34 · 439 阅读 · 0 评论 -
C++ primer 复习 第二章 变量和基本类型 2.2 — 2.6
C++ primer 复习 第二章 变量和基本类型2.2 变量变量变量提供一个可供程序操作的有名称的空间变量都有类型,类型决定了变量的内存空间int sum = 0, val, // sum,val和units_sold都是int型units_sold = 0; // sum 和 units_sold 初值为0,val未初始化Sales_item item; // item 是 Sales_item 类型std::string book("0-2-1-78345-X"); // boo原创 2021-11-08 22:21:43 · 815 阅读 · 0 评论 -
C++ primer 第八章复习
C++ primer 第八章8.1 IO类IO 库类型和头文件头文件类型IOStreamIStream 从流中读取,OStream 向流中写入FstreamIfstream 从文件中读取,Ofstream 向文件中写入SstreamIstringstream 从string对象读取,Ostringstream 向对象写入IO 对象不可拷贝或赋值std::ofstream out1, out2;out2 = out1;//错误,流对象不能赋值std::o原创 2022-02-10 19:54:59 · 741 阅读 · 0 评论 -
C++ primer 第九章复习 - 2
C++ primer 第九章9.5 额外的string操作构造 string 的其它方法const char* cp = "Hello World!"; //以空字符结束的数组char noNull[] = { 'H', 'I' }; //不是以空字符结束std::string s1(cp); //拷贝cp中的字符直至遇到空字符,等同于s1="Hello World!"std::string s2(noNull,2); //从noNull拷贝两个字符: s2 = "HI"std::stri原创 2022-03-01 15:05:07 · 627 阅读 · 0 评论 -
C++ primer 复习 第一章
C++ primer 复习 第一章1.1 编写一个简单的C++程序C++程序内容每个C++程序都包含一个或多个函数,其中一个必须命名为 main函数的定义函数名,参数列表,函数体,返回类型main 函数int main(){ return 0;}类型定义了数据元素的内容(所占内存大小)和该数据上可进行的计算数据保存数据保存在变量中,每个变量都有自己的类型若 int a = 0,则 a 是一个int类型的变量或 a是 int型内置类型语言自定义的类型1.2 输入和输出(s原创 2021-10-30 14:16:36 · 306 阅读 · 0 评论 -
C++ primer 复习 第四章 表达式 复习
C++ primer 复习 第四章 表达式4.1 表达式基础表达式由一个或多个运算对象组成,字面值和变量是最简单的表达式把运算符和运算对象结合起来可产生较复杂的表达式一元运算符:作用于一个运算对象的运算符,例 取地址符和解引用符二元运算符:作用于两个运算对象,例相等(==)和乘法三元运算符:只有一个运算符重载:当运算符作用于类类型的运算对象时,用户可以自定义其含义。例如,IO库的 >> 和 << 运算符,但是运算对象的个数,运算符的优先级是无法改变的C++表达式非原创 2022-03-12 13:42:26 · 963 阅读 · 0 评论 -
C++ Primer 阅读笔记(二)
2.4 const限定符const 修改的变量,其值无法更改const 对象创建后其值无法更改,所以必须初始化1 初始化和constconst 类型对象只能执行不改变其内容的操作。例,利用 const 对象去初始化另外一个对象(因为拷贝一个对象的值并不会改变它,拷贝完成的新对象和原来对象无关)int i = 42;const int ci = i; //正确:i的值被拷贝给了 ci int j = ci; //正确:ci的值被拷贝给了 j拷贝一个对象的值并不会改变它,一旦拷贝完原创 2021-06-17 18:53:45 · 277 阅读 · 0 评论 -
C++ Primer 阅读笔记(一)
2.3 复合类型2.3.1 引用2.3.2 指针1 指针指向是指向另一种类型的复合类型与引用类似都实现了对其它对象的间接访问与引用不同指针本身是对象,允许对其赋值和拷贝在其生命周期内,可以指向几个不同的对象不需要在定义时赋初值,在块作用域若未初始化,则拥有一个不确定的值2 获取对象的地址指针存放某个对象的地址,获取对象地址,需用取地址符(&)int val = 42;int *p = &val; // p指针存放变量val的地址,或者说p是指向val的原创 2021-06-16 19:22:32 · 501 阅读 · 14 评论 -
阶段性总结问题整理
1 Java编译过程Java程序从源文件创建到程序运行要经过两大步骤:Java文件由编译器编译成class文件字节码由java虚拟机解释运行编译阶段:创建源文件后,程序先要被JVM中的java编译器进行编译为.class文件。编译一个类时,若这个类所依赖的类还没有被编译,编译器会自动的先编译这个所依赖的类,然后引用;若java编译器在指定的目录下找不到该类所依赖的类的 .class文件或者 .java源文件,就会报"Can't found sysbol"的异常错误编译后的字节码文件格式主要分原创 2020-10-09 17:26:26 · 580 阅读 · 0 评论 -
C++编程提高
18 常用类的使用18.1 string类的使用通过代码实现对string对象的以下操作:构造、拷贝赋值、比较、截取、转换为c字符串构造&拷贝赋值//无参构造string s1; //使用字符串s初始化const char* str = "hello world";string s2(str);//使用一个string对象初始化另一个string对象string s3(s2);//使用n个字符c初始化 string s4(10, 'a');字符串之间比较strin原创 2020-10-09 16:46:19 · 283 阅读 · 0 评论 -
C++核心编程
13 C++类型转换C风格转换【(TYPE)EXPRESSION】可在任意类型之间转换,且不易查找。所以C++引进了四种类型转换操作符,解决以上问题。类型主要用途static_cast静态类型转换dynamic_cast子类和父类间多态类型转换const_cast去掉const属性转换reinterpreter_cast重新解释类型转换13.1 static_caststatic_cast<目标类型>(标识符)静态,即在编译期内就可完原创 2020-10-09 16:38:02 · 861 阅读 · 0 评论