自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 第 19 章 特殊工具与技术

练习 19.1: #include<iostream> #include<cstdlib> using namespace std; void* operator new(size_t size) { if (void* mem = malloc(size)) { cout << "operator new" << endl; return mem; } else throw bad_alloc(); } void operator

2021-12-11 17:09:16 263

原创 第 18 章 用于大型程序的工具

练习 18.1: (a):异常对象的类型是range_error。 (b):异常对象的类型是exception。 如果将(b)中的throw语句写成throw p,将会出现运行时错误。throw *p被抛出的异常对象是对指针p解引用的结果。若写成throw p,则抛出的异常对象是exception*类型。 练习 18.2: 指针p不会被释放,造成内存泄漏。 练习 18.3: class intArray { public: intArray(size_t n): p(new int[n]) {

2021-12-10 09:47:55 181

原创 第 17 章 标准库特殊设施

练习 17.1: tuple<int, int, int> threeInt( 10,20,30 ); 练习 17.2: tuple<string, vector<string>, pair<string, int>> t; 练习 17.3: #ifndef EX17_3_H #define EX17_3_H #include<iostream> #include<fstream> #include<vector

2021-12-08 15:58:06 186

原创 第 16 章 模板与泛型编程

练习 16.1: 编译器处理过程,用实际的模板实参来生成模板的一个特殊实例,其中参数被替换为对应的实参。 练习 16.2: #include<iostream> #include<functional> #include<cstring> using namespace std; template<typename T> int compare(const T& v1, const T& v2) { if (less<T&gt

2021-12-02 22:21:23 289

原创 第 15 章 面向对象程序设计

练习 15.1:

2021-11-27 18:08:33 268

原创 第 14 章 操作符重载与类型转换

练习 14.1: 区别: 如果一个运算符函数是成员函数,则它的第一个运算对象绑定到隐式的this指针上,因此,成员运算符函数的参数数量比运算符的运算对象总数少一个。 重载运算符函数,或者是类的成员,或者至少含有一个类类型的参数。 重载运算符不保证运算对象的求值顺序,例如对&&和||的重载版本不再具有“短路求值”的特性,两个操作数都要求值,而且不规定操作数的求值顺序。 相同点: 重载运算符与对应的内置操作符具有相同的优先级和结合律。 练习 14.2: #ifndef EX14_

2021-11-23 13:05:55 269

原创 第 13 章 拷贝控制

练习 13.1: 如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数; 使用=定义变量 将一个对象作为实参传递给一个非引用类型的形参 从一个返回类型为非引用的函数返回一个对象 用花括号列表初始化一个数组中的元素或一个聚合类中的成员 某些类类型还会对它们所分配的对象使用拷贝初始化。 练习 13.2: 拷贝构造函数自己的参数必须是引用类型。如果其参数不是引用类型,则调用永远也不会成功——为了调用拷贝构造函数,我们必须...

2021-11-21 15:36:20 370

原创 第 12 章 动态内存

练习 12.1: b1和b2共享一个StrBlob对象,b2被销毁,但b2中的元素没有被销毁,所以他们都有4个元素; 练习 12.2: #include<iostream> #include<string> #include<vector> #include<memory> #include<initializer_list> using namespace std; class StrBlob { public: typedef ve

2021-11-17 20:30:11 128

原创 第 11 章 关联容器

练习 11.1: map是关键字-值对的集合。我们可以通过关键字有效地查找值。 vector是对象的集合,每个对象都有一个关联的索引,该索引允许访问该对象。 练习 11.2: list: 一个待办事项清单。总是需要在任何地方插入或删除元素。 vector:保存一些重要的关联数据,总是需要按索引查询元素。 deque:消息处理。FIFO。 map:字典。 set:空头支票。 练习 11.3 #include<iostream> #include<string>...

2021-11-16 09:55:16 130

原创 第 10 章 泛型算法

练习 10.1 && 练习 10.2 #include<iostream> #include<vector> #include<list> #include<algorithm> using namespace std; int main() { vector<int> iv = { 3,2,3,4,3,5 }; cout << count(iv.begin(), iv.end(), 3) << e

2021-11-15 11:23:23 768

原创 第 9 章 顺序容器

练习 9.1: (a)list较好,涉及到可能在中间插入的操作 (b)deque较好,因为涉及到在头部删除,末尾插入的操作,都是在两端进行。 (c)vector较好,没有更好的选择。 练习 9.2: list<deque<int>> l 练习 9.3: 迭代器begin和end必须指向相同的容器。end可以与begin指向相同的位置,但不能指向begin之前的位置。 练习 9.4: #include<iostream> #inc...

2021-11-13 22:18:30 132

原创 第 8 章 IO类

练习8.1 && 练习8.2: #include<iostream> #include<string> using namespace std; istream& func(istream& is) { string str; while (is >> str) cout << str << endl; is.clear(); return is; } int main() { istream

2021-11-08 22:54:49 118

原创 第 7 章 类

练习7.1: #include<iostream> #include<string> using namespace std; // Sale_data类 struct Sale_data { string bookNo; unsigned units_sold = 0; double revenue = 0.0; void AddData(Sale_data data); void SetData(Sale_data data);

2021-11-08 17:11:54 229

原创 第 6 章 函数

练习6.1: 形参:在函数形参表中声明的局部变量。它们由每个函数调用中提供的参数初始化。实数:函数调用中提供的值,用于初始化函数的形参。 练习6.2: // (a) string f() { string s; // ... return s; } // (b) void f2(int i) { /* ... */ } // (c) int calc(int v1, int v2) { /* ... */ } // (d) double square(double x) {

2021-11-06 17:47:25 193

原创 第 5 章 语句

练习 练习5.4: // iter指向nullptr,无效。 while (string::iterator iter != s.end()) { /* . . . */ } // 正确: string::iterator iter = s.begin(); while (iter != s.end()) { /* . . . */ } // if语句不在while语句块中,所以status是无效的。 while (bool status = find(word)) { /* . . . */ }

2021-11-05 16:52:00 448

原创 第 4 章 表达式

练习 练习4.6: i % 2 == 0 ? "even" : "odd"; 练习4.7: 当计算的结果超出该类型所能表示的范围就会产生溢出: short svalue = 32767; ++svalue; // -32768 int ivalue = 2147483647; ++ivalue; // -2147483648 unsigned uivalue = 0; --uivalue; // 4294967295 练习4.8: 逻辑与运算符和OR运算符总是...

2021-11-05 11:31:19 199

原创 第3章 字符串、向量和数组

目录 3.1 命名空间的using声明 3.2 标准库类型string 3.2.1 定义和初始化string对象 3.2.2 string对象上的操作 3.2.3 处理string对象中的字符 3.3 标准库类型vector 3.3.1 定义和初始化vector 3.3.2 向vector对象中添加元素 3.3.3 其他vector操作 3.4 迭代器介绍 3.4.1 使用迭代器 3.4.2 迭代器运算 3.5 数组 3.5.1 定义和初始化数组 3.5.2 访问数组元素 3

2021-11-04 17:13:45 233

原创 第2章 变量和基本类型

目录 2.1 基本内置类型 2.1.1 算数类型 2.1.2 类型转换 2.1.3 字面值常量 2.2 变量 2.2.1 变量的定义 2.2.2 变量声明和定义的关系 2.2.3 标识符 2.2.4 名字的作用域 2.3 复合类型 2.3.1 引用 2.3.2 指针 2.3.3 理解复合类型的声明 2.4 const 限定符 2.4.1 const的引用 2.4.2 指针和const 2.4.3 顶层const 2.4.4 constexpr和常量表达式 2.5 处理类

2021-11-03 20:45:02 719

原创 第1章 开始

1.函数的定义:返回类型(return type)、函数名(function name)、形参列表(parameter,允许为空)和函数体(function body)。 2.c++程序必须包含一个main函数。main函数的返回值必须为int。 // int为返回类型,main为函数名,小括号包围的是可以为空的形参列表 int main() { // 大括号包围的是函数体 return 0; // 返回值 } ...

2021-11-03 09:27:43 318

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除