![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++复习笔记
文王梦熊
简书:https://www.jianshu.com/u/4f6fb2124907
展开
-
第8章 IO类
8.1 标准库定义的IO类型iostream 定义了用于读写流的基本类型fstream 定义了读写命名文件的类型sstream 定义了读写内存string对象的类型对于宽字符,类型和函数的名字都以 w 开头,wcin/wcout/wifstream/wofstreamIO对象拷贝和赋值ofstream out1,out2;out1=out2; ...原创 2019-01-24 10:54:39 · 106 阅读 · 0 评论 -
STL hashtable简述
1.线性探测负载系数:元素个数/表格大小当hash函数计算出某个元素的位置时,若产生冲突,循环往下一一寻找(到了尾部,就绕回首部)元素删除一般采用惰性删除,这是因为hashtable中的每一个元素不仅表述自己,也关系到其他元素的排列存在一次聚集问题(primary clustering)2. 二次探测(平方探测)目的是用来解决一次聚集问题解决冲突的方程F(i)=i^2。整体过程...原创 2019-04-24 18:09:35 · 289 阅读 · 0 评论 -
STL空间配置器
1.SGI标准中的两个空间配置器std:allocator 不推荐使用,其实现主要是对::operator new 和operator delete做简单包装而已std::alloc 将内存分配和对象内容构造分开2.construct与destoryconstructdestory 只接受一个指针的版本destory 接受一对迭代器版本首先获取value_type萃取其...原创 2019-04-18 11:05:08 · 162 阅读 · 0 评论 -
STL deque实现解析
1.总体概览双向开口的连续线性空间头尾均可以常数时间插入和删除空间是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,不用像vector那样重新分配新空间再拷贝deque提供Random Access Iterator 但是其迭代器不是普通指针,复杂度较之于vector会高出很多,所以一般使用vector而不是deque2.deque的中控器(map)采用一块所谓...原创 2019-04-22 19:24:02 · 620 阅读 · 0 评论 -
STL list实现
1.数据结构节点结构:prev 指针、next指针、data三部分迭代器类型:Bidirectional Iterator数据结构:环状双向链表,只需要一个指针,下面分别是空表和有数据的链表示意图根据上图,故可以很快的得到begin()和end()等迭代器了 iterator begin() {return (link_type)((*node).next);} ...原创 2019-04-22 12:58:21 · 461 阅读 · 0 评论 -
traits思想
1.前提目的:设计迭代器分开实现list和list_iterator在使用时会暴露过多细节,所以STL容器都是都要实现自己的专属迭代器,以作更好的封装2.迭代器的相应类型value typedifference typepointer typereference typeiterator category3.存在的问题1.C++中只有sizeof而没有typeof,如何...原创 2019-04-17 14:45:57 · 139 阅读 · 0 评论 -
vector
1.数据结构与迭代器迭代器 Random Access Iterator数据结构 连续空间含有三个迭代器:start、finish、end_of_storage构造函数允许指定vector大小和初值,主要是先调用空间配置器分配n个对象空间然后使用uninitialized_fill_n来填充初值最后更新三个迭代器。2.push_back若有空间,则调用construc...原创 2019-04-20 17:36:04 · 114 阅读 · 0 评论 -
C++ 五种迭代器类别
1.Input Iterator用于读取序列中的元素,支持以下操作比较两个迭代器的相等和不相等运算符(==和!=)用于推进迭代器的后置和前置递增运算(++)用于读取元素的接应用运算符(*),解引用只会出现在赋值运算符右侧(即不可修改,只可读)箭头运算符(->)只能单边扫描2.Output Iterator只写不读的,支持以下操作++解引用(*),只会出现在赋值运算符...原创 2019-04-02 15:41:01 · 1152 阅读 · 0 评论 -
new、operator new 、placement new
代码来自 www.cplusplus.com直接上代码#include <iostream> // std::cout#include <new> // ::operator newstruct MyClass { int data[100]; MyClass() {std::cout << "constructe...原创 2019-04-01 10:51:06 · 126 阅读 · 0 评论 -
第3章 标准库类型string、vector、数组
1.string的几种初始化方式string s1;string s2(s1);string s3("A");string s4(n,'c') //n个c组成的串直接初始化与拷贝初始化拷贝初始化使用=,而直接初始化不使用2. cbegin 和cend返回只读的迭代器const_iterator3.数组一些注意事项不允许使用auto元素必须为对象,不存在...原创 2019-01-09 18:53:37 · 105 阅读 · 0 评论 -
第2章 基本类型
1.算术类型宽字符和unicodewchar_t 宽字符 16位char16_t unicode 16位char32_t unicode 32位字符型char/signed char/unsigned charchar 和signed char并不相同,但三者只表现为有无符号两种情况赋值超出范围问题当给无符号整数类型赋值时,若超出表示范围...原创 2019-01-09 18:52:49 · 102 阅读 · 0 评论 -
第7章 类
7.1 定义抽象类型this指针调用成员函数时,实际上在替某个对象调用它,成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象//实际执行过程Sales_data::isbn(&total);//在total对象调用函数时,将对象的地址传入,初始化this指针//任何对类成员的直接访问都可以被看做this的隐式引用return book; //等价于 ret...原创 2019-01-14 20:37:56 · 135 阅读 · 0 评论 -
第6章 函数
6.1 函数基础调用运算符( ),作用于一个表达式(函数,或者函数指针),实参初始化形参的顺序不确定自动对象当函数控制路径经过变量定义语句时,创建该对象当到达定义所在块的末尾时,销毁该对象局部静态变量第一次经过定义语句时创建直到程序终止销毁分离式编译//程序分为多个文件,分别独立编译//假设有 main.cpp / func.cpp / func.h ...原创 2019-01-14 20:34:49 · 123 阅读 · 0 评论 -
第5章 语句
try语句块与异常处理throw表达式表示遇到了无法处理的异常,抛出异常try以try开始,多个catch结束,try语句块中抛出的异常会被catch子句处理try{ //do something throw runtime_err("an error");}catch(exception-declaration){ //deal the exception...原创 2019-01-14 20:29:48 · 112 阅读 · 0 评论 -
第4章 表达式
第4章 表达式4.1 基础左值右值当一个对象被用作左值时,用的是对象的身份;当用作右值时,用的是对象的值求值顺序int i=f1()*f2(); //无法知道f1()和f2()的计算顺序int j=0;cout&lt;&lt;j&lt;&lt;" "&lt;&lt;++j&lt;&lt;endl;//可能先计算++j原创 2019-01-14 20:27:55 · 128 阅读 · 0 评论 -
第9章 顺序容器
9.1 概述容器种类vectordeque 双端队列list 双向链表forward_list 单项链表array 固定大小数组特性vector、string顺序存储,插入删除较为耗时,但可以随机访问deque支持随机访问,在中间位置插入/删除代价很高,但在两端很快array 比内置数组更加安全选择容器的基本原则一般先考虑vector程序...原创 2019-01-24 15:19:27 · 113 阅读 · 0 评论 -
成员指针
.* //对象的成员指针->* //指针的成员指针两者都是定义在class之外,提供一种间接访问类中成员的方式,下面将直接使用代码说明class Mem {public: mutable int a; Mem(int i) :a(i) {} void fun() { cout << "fun called" << endl; }};...原创 2019-05-05 18:52:00 · 745 阅读 · 0 评论