C++ 语言
文章平均质量分 81
C++ primer,深度探究 C++ 对象模型等 C++ 书籍的阅读笔记
叫我阿呆就好了
一起学习,共同进步,计算机领域知识分享
展开
-
C++ 浅谈之 AVL 树和红黑树
C++ AVL 树和红黑树原创 2023-02-17 15:53:40 · 445 阅读 · 1 评论 -
C++ 浅谈之二叉搜索树
C++ 二叉搜索树原创 2023-02-15 20:19:21 · 511 阅读 · 28 评论 -
C++ 浅谈之 STL Deque
STL Deque 底层实现原创 2023-02-09 22:50:01 · 244 阅读 · 5 评论 -
C++ 浅谈之 STL List
STL List 底层实现原创 2023-02-09 22:48:35 · 311 阅读 · 2 评论 -
C++ 浅谈之 STL Vector
STL Vector 底层实现原创 2023-02-09 19:35:41 · 720 阅读 · 33 评论 -
C++ 浅谈之空间配置器
C++ STL 组件 空间配置器原创 2023-02-08 14:20:01 · 311 阅读 · 6 评论 -
C++ 浅谈之适配器
C++ STL 组件 适配器原创 2023-02-07 10:43:39 · 655 阅读 · 9 评论 -
C++ 浅谈之 STL 组件仿函数
C++ STL组件 仿函数原创 2023-02-07 10:42:04 · 343 阅读 · 2 评论 -
C++ 浅谈之右值引用,转移语义和完美转发
右值引用,转移语义和完美转发原创 2023-02-05 16:39:49 · 642 阅读 · 31 评论 -
C++ 浅谈之左值、纯右值、将亡值
左值,纯右值,将亡值原创 2023-02-03 09:32:05 · 546 阅读 · 44 评论 -
C++ 浅谈之智能指针 shared_ptr 循环引用
智能指针 shared_ptr 循环引用原创 2023-02-02 10:33:59 · 1089 阅读 · 42 评论 -
C++ 浅谈之智能指针 auto_ptr 和 unique_ptr 对比
智能指针 auto_ptr 和 unique_ptr 对比原创 2023-02-01 11:42:36 · 560 阅读 · 34 评论 -
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 · 1103 阅读 · 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 · 652 阅读 · 0 评论 -
C++ primer 第十三章复习 13.1
C++ primer 第十三章复习13.1 拷贝,赋值与销毁类 有五种特殊成员函数控制对象拷贝,移动,赋值和销毁拷贝构造函数拷贝赋值运算符移动构造函数移动赋值运算符析构函数上述操作称为拷贝控制操作,若一个类没有定义这些函数,编译器会自动生成缺失的函数拷贝构造函数拷贝构造函数通常不应该是 explicit ( explicit 不可以隐式初始化对象)class Foo{public: Foo(){} //构造函数 Foo(const Foo&){} //拷贝构造函数原创 2022-01-21 13:04:13 · 452 阅读 · 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 · 602 阅读 · 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 · 215 阅读 · 0 评论 -
C++ primer 第十二章 复习
C++ primer 第十二章12.1.1 动态内存与智能指针全局对象:在程序启动时分配,程序结束时销毁局部对象:进入其作用域时被创建,离开作用域销毁(栈对象)静态对象:在第一次使用之前分配,程序结束销毁动态内存和智能指针动态内存(堆)的管理是通过一对运算符来完成的new:在动态内存中为对象分配空间并返回一个指向该对象的指针delete:接受一个动态内存的指针,销毁该对象,释放相关内存为了更安全的使用内存,C++11提供了两个智能指针shared_ptr:允许多个指针指向同一个对象u原创 2022-03-11 20:22:43 · 390 阅读 · 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 · 683 阅读 · 0 评论 -
C++ primer 第九章复习 - 1
C++ primer 第九章9.1 顺序容器概述容器是容纳特定类型对象的集合,每种容器都是性能和功能的权衡C++ 容器分为顺序容器,关联容器顺序容器的元素排列由元素添加到容器的次序决定若不确定使用哪种容器,可在程序中只使用 vector 和 list 的共同操作:使用迭代器,不使用下标,避免随机访问,这样在必要时替换很方便9.2 容器库概览容器类型上的操作形成了一种层次:某些操作是所有容器类型都支持的,另外一些操作仅针对顺序容器,关联容器或无序容器,还有一些仅适用于小部分容器容器均定义为原创 2022-03-01 10:10:36 · 706 阅读 · 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 · 390 阅读 · 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 · 761 阅读 · 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 · 694 阅读 · 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 · 583 阅读 · 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 · 261 阅读 · 0 评论 -
C++ primer 复习 第四章 表达式 复习
C++ primer 复习 第四章 表达式4.1 表达式基础表达式由一个或多个运算对象组成,字面值和变量是最简单的表达式把运算符和运算对象结合起来可产生较复杂的表达式一元运算符:作用于一个运算对象的运算符,例 取地址符和解引用符二元运算符:作用于两个运算对象,例相等(==)和乘法三元运算符:只有一个运算符重载:当运算符作用于类类型的运算对象时,用户可以自定义其含义。例如,IO库的 >> 和 << 运算符,但是运算对象的个数,运算符的优先级是无法改变的C++表达式非原创 2022-03-12 13:42:26 · 920 阅读 · 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 · 237 阅读 · 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 · 435 阅读 · 14 评论 -
阶段性总结问题整理
1 Java编译过程Java程序从源文件创建到程序运行要经过两大步骤:Java文件由编译器编译成class文件字节码由java虚拟机解释运行编译阶段:创建源文件后,程序先要被JVM中的java编译器进行编译为.class文件。编译一个类时,若这个类所依赖的类还没有被编译,编译器会自动的先编译这个所依赖的类,然后引用;若java编译器在指定的目录下找不到该类所依赖的类的 .class文件或者 .java源文件,就会报"Can't found sysbol"的异常错误编译后的字节码文件格式主要分原创 2020-10-09 17:26:26 · 529 阅读 · 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 · 248 阅读 · 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 · 803 阅读 · 0 评论 -
C++基础入门
C++分享展示MD1 行云C++编程命名约定1.1 通用命名规则小驼峰法,tableName (除第一个单词外,每个单词首字母大写)大驼峰法,TableName (所有单词首字母大写,其余小写)下划线法,table_name(所有字母小写,用下划线连接)类型名和变量名一般为名词,例 num_errors函数名一般为动明结合(大驼峰法且动词在前名词在后),例OpenFile()1.2 文件命名文件名全部小写,可包含下划线或连字符。C++文件以.cpp结尾,例如 hash_table.cpp原创 2020-10-09 16:13:09 · 1012 阅读 · 0 评论