第十四章 14.8节练习
来源:互联网 发布:ai人工智能培训 编辑:程序博客网 时间:2024/05/08 00:37
练习14.33
一个重载的函数调用运算符应该接受几个运算对象?
解答:
这里应该是一个运算对象。
因为“行为像函数”所以有多少个参数都没有问题。
练习14.34
定义一个函数对象类,令其执行if-then-else的操作:该类的调用运算符接受三个形参,它首先检查第一个形参,如果成功返回第二个形参的值;如果不成功返回第三个形参的值。
解答:
#include <iostream>using namespace std;class Intcmp{public: int operator()(const int& a, const int& b, const int& c) {return (a)? b : c;}};int main(){ Intcmp compare; cout << compare(0, 1, 100) << endl; cout << compare(8, 1, 100) << endl;}
练习14.35
编写一个类似于PrintString的类,令其从istream中读取一行输入,然后返回一个表示我们所读内容的string。如果读取失败,返回空string。
解答:
using namespace std;class Line{public: Line(istream &i = cin, char c = ' '):in(i), sep(c){} string operator()(void) { string line; getline(cin, line); if(line.size()){ return line; } else{ return ""; } }private: istream ∈ char sep;};
练习14.36
使用前一个练习定义的类读取标准输入,将每一行保存为vector的一个元素。
解答:
#include <iostream>#include <vector>using namespace std;class Line{public: Line(istream &i = cin, char c = ' '):in(i), sep(c){} string operator()(void) { string line; getline(cin, line); if(line.size()){ return line; } else{ return ""; } }private: istream ∈ char sep;};int main(){ Line line; string tmp_line; vector<string> text; while((tmp_line = line()) != ""){ text.push_back(tmp_line); } for(auto i : text){ cout << i << endl; }}
练习14.37
编写一个类令其检查两个值是否相等。使用该对象及标准库算法编写程序,令其替换某个序列中具有给定值的所有实例。
解答:
#include <iostream>#include <vector>#include <algorithm>using namespace std;class Cmp{ public: bool operator()(const int &a){ return a == b; } static int b;};int Cmp::b = 10;void if_replace(int &a){ Cmp cmp; if (cmp(a)){ a = 100; }}int main(){ vector<int> test{1,2,1038,49,56,10,35,6,3,4,25,56,3,3,10,4,6,10}; for_each(test.begin(), test.end(), if_replace); for(auto i : test){ cout << i << endl; }}
0 0
- 第十四章 14.8节练习
- 第十四章 14.8.1节练习
- 第十四章 14.8.2节练习
- 第十四章 14.8.3节练习
- 第十四章 14.1节练习
- 第十四章 14.3节练习
- 第十四章 14.4节练习
- 第十四章 14.7节练习
- 第十四章 14.2.1节练习
- 第十四章 14.2.2节练习
- 第十四章 14.9.1节练习
- 第十四章 14.3.1节练习 & 14.3.2节练习
- 第十四章 14.5节练习 & 14.6节练习
- 第十四章 14.9.2节练习 & 14.9.3节练习
- simply scheme 第十四章 练习
- 第十四章编程练习(1)
- 第十四章编程练习(2)
- 第十四章编程练习(3)
- linux常用命令大全(转)
- SQL定义变量DECLARE
- 第八章 分类:基本概念
- 字符串操作
- ExtJS3.0与KindEditor4.1.2整合
- 第十四章 14.8节练习
- Multil-threading
- linux查看哪个进程正在使用该文件系统(fuser和lsof)
- hdu (1556 树状数组)
- 队列的实现-java
- MTL_TRANSACTION_TYPES and MTL_TXN_SOURCE_TYPES表中字段为英文
- windows下部署otter
- Distributed system design
- 漫谈程序员各种大赛