02 2022 档案

摘要:目录目标代码构造函数定义的隐式类型转换分析a1分析a2分析a3 目标代码 旨在弄懂下面的代码,明确变量a1,a2,a3在创建时编译器究竟干了那些事: #include<iostream> using namespace std; class A{ public: int x; A() {cout<< 阅读全文
posted @ 2022-02-28 22:45 咪啪魔女 阅读(516) 评论(0) 推荐(0) 编辑
摘要:11.4.0 基本介绍 共有四种无序容器: unorder_set unorder_map unorder_multiset unorder_multimap 有序容器用比较运算符组织元素;无序容器用hash函数和**关键字类型的==**组织元素 何时使用: 如果关键字本身是无序的,且发现问题可以转 阅读全文
posted @ 2022-02-27 18:08 咪啪魔女 阅读(83) 评论(0) 推荐(0) 编辑
摘要:11.2.1 定义关联容器 //声明空容器 map<string, size_t> word_count; //列表初始化 set<string> exclude = {"the","and","or"}; map<string, string> authors = { {"John","James 阅读全文
posted @ 2022-02-27 18:07 咪啪魔女 阅读(49) 评论(0) 推荐(0) 编辑
摘要:11.3.0 关联容器中额外的类型别名 11.3.1 关联容器迭代器 map的关键字是const的 解引用时得到的是value_type(即元素类型)的值的引用 map类型的元素是pair,map的vaule_type是pair<const first, second> 即不能通过迭代器改变map的 阅读全文
posted @ 2022-02-27 18:07 咪啪魔女 阅读(39) 评论(0) 推荐(0) 编辑
摘要:11.1.0 关联容器的类型 关联容器和顺序容器一样,都是模板类型,需要额外参数来指定类型 multi表示允许重复关键字 unordered表示关键字无序,内部是hash实现 map:存储“键-值”对,也叫关联数组 set:任何关键字只能出现一次 11.1.1 使用map //打印每个单词在输入中出 阅读全文
posted @ 2022-02-27 18:06 咪啪魔女 阅读(30) 评论(0) 推荐(0) 编辑
摘要:与其他容器不同,链表类型list和 forward_list定义了几个成员函数形式的算法,如下表所示。特别是,它们定义了独有的sort、merge、remove、reverse和unique。 通用版本的sort要求随机访问迭代器,因此不能用于list和forward_list,因为这两个类型分别提 阅读全文
posted @ 2022-02-27 18:05 咪啪魔女 阅读(22) 评论(0) 推荐(0) 编辑
摘要:10.5.1 5类迭代器 按操作分类,形成了一种层次,高类别的迭代器支持低类别的所有操作 对于向一个算法传递错误类别的迭代器的问题,很多编译器不会给出任何警告或提示。 输入迭代器(input iterator) 输入迭代器必须支持 用于比较两个迭代器的相等和不相等运算符(==、!=) 用于推进迭代器 阅读全文
posted @ 2022-02-27 18:04 咪啪魔女 阅读(27) 评论(0) 推荐(0) 编辑
摘要:除了为每个容器定义的迭代器之外,标准库在头文件 iterator 中还定义了额外几种迭代器。这些迭代器包括以下几种。 插入迭代器(insert iterator),这些迭代器被绑定到一个容器上,可用来向容器插入元素。 流迭代器( stream iterator):这些迭代器被绑定到输入或输出流上,可 阅读全文
posted @ 2022-02-27 18:04 咪啪魔女 阅读(34) 评论(2) 推荐(0) 编辑
摘要:泛型算法和容器一样,具有一致的结构 一般都接受一个”迭代器范围“ 理解算法最基本的方法就是了解他们是否 读取元素 改变元素 重排元素 10.2.1 只读算法 常见的几个只读算法 find count accumulate equal accumulate前两个参数接受一个迭代器范围,最后一个参数接受 阅读全文
posted @ 2022-02-27 18:03 咪啪魔女 阅读(32) 评论(0) 推荐(0) 编辑
摘要:10.3.1 向算法传递函数 作为一个例子,假定希望在调用elimDups(参见10.2.3节)后打印vector的内容。 此外还假定希望单词按其长度排序,大小相同的再按字典序排列。 为了按长度重排vector,我们将使用sort 的第二个版本,此版本是重载过的,它接受第三个参数,此参数是一个谓词( 阅读全文
posted @ 2022-02-27 18:03 咪啪魔女 阅读(44) 评论(0) 推荐(0) 编辑
摘要:基本说明 大多数算法都定义在头文件algorithm中 不直接操作容器,而是操作迭代器,所以具备普适性 举例:find算法 输入:迭代器范围以及查找值 返回值:找到则返回查找值的迭代器,否则返回end() 也可以操作string 操作数组 算法如何工作 访问序列中的首元素。 比较此元素与我们要查找的 阅读全文
posted @ 2022-02-27 18:02 咪啪魔女 阅读(41) 评论(0) 推荐(0) 编辑
摘要:何为适配器 适配器( adaptor)是标准库中的一个通用概念。容器、迭代器和函数都有适配器。 本质上,一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样。 一个容器适配器接受一种已有的容器类型,使其行为看起来像一种不同的类型。例如,stack适配器接受一个顺序容器(除array或fo 阅读全文
posted @ 2022-02-23 11:38 咪啪魔女 阅读(61) 评论(0) 推荐(0) 编辑
摘要:.size():容器中有多少元素 .capacity():不重新分配内存时,可容纳多少元素 .reserve(n):分配至少能容纳n个元素的内存 n>capacity时会分配使得capacity >= n n<=capacity时什么也不做 reserve()永远不会减少容器的内存空间;shrink 阅读全文
posted @ 2022-02-23 11:37 咪啪魔女 阅读(29) 评论(0) 推荐(0) 编辑
摘要:9.5.1 构造string的其他方法:略 9.5.2 改变string的其他方法:略 9.5.3 string搜索操作:略 9.5.4 compare函数:略 9.5.5 数值转换 int main(){ string s = "pi = 3.14"; double d = stod(s.subs 阅读全文
posted @ 2022-02-23 11:37 咪啪魔女 阅读(35) 评论(0) 推荐(0) 编辑
摘要:9.2.0 容器库的操作层次 容器库在操作上形成了一种层次 某些操作是所有容器类型都提供的((参见表9.2,第295页)。 另外一些操作仅针对顺序容器(参见表9.3,第299页)、关联容器(参见表11.7,第388页)或无序容器(参见表11.8,第395页)。 还有一些操作只适用于一小部分容器。 在 阅读全文
posted @ 2022-02-23 11:36 咪啪魔女 阅读(46) 评论(0) 推荐(0) 编辑
摘要:9.3.1 向顺序容器添加元素 push_back 除了array和forward_list以外,都可以使用push_back 插入的是对象的值的拷贝,而不是对象本身 string s; s.push_back('a'); //等价于 s+='a' push_front list,forawrd_l 阅读全文
posted @ 2022-02-23 11:36 咪啪魔女 阅读(38) 评论(0) 推荐(0) 编辑
摘要:顺序容器的类型 顺序容器类型 描述 vector 可变长数组;支持随机访问;在尾部之外的位置插入元素较慢 string 和vector类似,但是专门用来保存字符;随机访问;尾部插入块 list 双向链表;顺序访问;在任何位置插入都很快 forward_list 单向链表;单向顺序访问;在任何位置插入 阅读全文
posted @ 2022-02-23 11:35 咪啪魔女 阅读(30) 评论(0) 推荐(0) 编辑
摘要:7.4.0 类定义时的处理流程 先编译成员的声明 所有成员可见后,编译函数体 7.4.1 一般的名字查找流程 在所在块内寻找声明,只找名字之前的部分 没找到则去外层作用域找 7.4.2 类成员的名字查找 同一般的名字查找流程,现在类内找,没找到再去外层找 typedef double Money; 阅读全文
posted @ 2022-02-20 08:26 咪啪魔女 阅读(63) 评论(0) 推荐(1) 编辑
摘要:7.5.1 构造函数初始化值列表 初始化与赋值 观察下面两段构造函数的代码 //初始化bookNo,units_sold,revenue Sale_data(const String &s, unsigned cnt, double price) : bookNo(s), units_sold(cn 阅读全文
posted @ 2022-02-20 08:26 咪啪魔女 阅读(32) 评论(0) 推荐(0) 编辑
摘要:7.1.1 定义Sale_data类 目标代码 弄懂下面的代码 #include<iostream> using namespace std; struct Sale_data{ //关于Sale_data对象的操作函数 string ibsn() const {return bookNo;} Sa 阅读全文
posted @ 2022-02-20 08:25 咪啪魔女 阅读(207) 评论(0) 推荐(0) 编辑
摘要:7.2.0 目标代码 #include<iostream> using namespace std; class Sale_data{ //为Sale_data的非成员函数所做的友元声明 friend istream &read (istream &, Sale_data &); friend os 阅读全文
posted @ 2022-02-20 08:25 咪啪魔女 阅读(34) 评论(0) 推荐(0) 编辑
摘要:使用函数指针 声明函数指针:int (*fp)(int, int); fp是一个指针,指向一个函数 函数的形参是两个int,返回类型是int 函数名作为值使用时,会自动转换为指针类型,取值符是可选的 int f(int, int); fp = f; fp = &f; 调用函数指针时,解引用符号是可选 阅读全文
posted @ 2022-02-20 08:20 咪啪魔女 阅读(37) 评论(0) 推荐(0) 编辑
摘要:6.1.1 局部变量 变量分类 变量类型 作用域 生命期 初始化 全局对象 整个程序 整个程序 默认初始化 自动对象 块作用域 声明时自动创建,出作用域后自动销毁 默认初始化 局部静态对象 块作用域 整个程序 值初始化 自动变量会多次创建和初始化,全局对象和局部静态变量只会创建和初始化一次 值初始化 阅读全文
posted @ 2022-02-20 08:19 咪啪魔女 阅读(73) 评论(0) 推荐(0) 编辑
摘要:6.5.1 默认实参 某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参(default argument)。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。 例如,我们使用string对象表示窗口的内容。一般情况下,我们 阅读全文
posted @ 2022-02-20 08:19 咪啪魔女 阅读(36) 评论(0) 推荐(0) 编辑
摘要:基本介绍 和其他变量一样,形参的类型决定了形参和实参交互的方式。 当形参是引用类型时,我们说它对应的实参被引用传递(passed by reference)或者函数被传引用调用(called by reference)。和其他引用一样,引用形参也是它绑定的对象的别名;也就是说,引用形参是它对应的实参 阅读全文
posted @ 2022-02-20 08:17 咪啪魔女 阅读(45) 评论(0) 推荐(0) 编辑
摘要:6.4.1 重载与const 重载与const形参 参数调用时会忽略顶层const,而不会忽略底层const // 重复声明了lookup void lookup(int i); void lookup(const int i); // 重复声明了lookup void lookup(int *i) 阅读全文
posted @ 2022-02-20 08:16 咪啪魔女 阅读(32) 评论(0) 推荐(0) 编辑

more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示