博学谷——让IT教学更简单,让IT学习更有效
{ tempCount++; //每参加一个选手,个数加1 //评委打分 deque
博学谷——让IT教学更简单,让IT学习更有效
return 0; }
//查看比赛结果
int speech_contest_print(int index, vector
int main() { //容器设计 map
博学谷——让IT教学更简单,让IT学习更有效 }
//第3轮选手抽签查看比赛结果
cout << \按任意键开始第3轮比赛:\cin.get();
speech_contest_draw(v3);
speech_contest(2, v3, mapSpeaker, v4); speech_contest_print(2, v4, mapSpeaker); system(\return 0;
第九章题目
一、填空题
1、模式可以将产品进行分类,每个工厂生产一类产品,提高了程序效率。
2、在C++11之间,auto默认修饰的。auto是根据表达式结果推导出变量类型,则使用auto时变量必须被。
3、C++11新标准中,使用完成数据初始化,称为列表初始化。
4、要解决由同一模板实例化出多个同类型函数的冗余问题,可以使用。 二、选择题
5、下列选项中,哪一项不是设计模式的分类()。 A、创建型模式 B、结构型模式 C、行为型模式 D、静态型模式
6、以下选项中哪个描述了迭代器模式的特点()。 A、使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系 B、用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
C、提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示 D、运用共享技术有效地支持大量细粒度的对象 7、简单工厂模式包含以下哪几个部分()
A、抽象工厂:工厂类的基类,提供工厂的公共操作接口。 B、具体工厂:简单工厂模式的核心,用来生产具体产品
C、抽象产品:具体产品类的基类,负责提供产品操作的公共接口 D、具体产品:是抽象产品的具体实现,描述不同产品的具体信息 8、下列关于右值引用的描述中,正确的是() A、右值引用是C++11引入的新引用类型
B、右值引用的作用是对将要销毁的对象信息进行保留 C、右值引用用“&&”运算符来定义
D、右值引用的一个重要特性就是能够绑定到一个将要销毁的对象 9、下列lambda表达式的定义形式中,正确的选项是()。 A、(参数列表) [捕获列表]->返回值类型 { 函数体 }
博学谷——让IT教学更简单,让IT学习更有效 B、返回值类型 (参数列表) [捕获列表] { 函数体 } C、[捕获列表](参数列表)->返回值类型 { 函数体 } D、以上均不正确 三、判断题
10、迭代器模式分离了聚合对象的遍历行为,这样既可以不暴露聚合类型的内部结构,又可
以让外部透明地操作聚合类型对象。 11、在C++11中,使用关键字nullptr来代替空指针,nullptr可以隐式转换为bool型(取值为false)和整型。
12、限定作用域的枚举类型定义的枚举成员在枚举类型作用域外不可访问。
13、委托构造函数体中的语句在目标构造函数完全执行后才被执行。目标构造函数体中的局
部变量不在委托构造函数体中起作用。 四、简答题
14、请总结一下lambda表达式的几种捕获列表形式。 15、请根据下面的UML图,实现迭代器模式。
AggregateclientIterator+First()+Next()+IsDone()+CurrentItem()ConcreteAggregate+CreateIterator()ConcreteIteratorreturn new ConcreteIterator(this)
第九章答案
1、抽象工厂 2、局部变量 3、{}
4、外部模板 5、C 6、C 7、ABCD 8、ABCD 9、C 10、对 11、错 12、对
初始化
博学谷——让IT教学更简单,让IT学习更有效
13、对 14、
1)[]:空捕获列表,表示lambda表达式不使用所在函数的任何变量。
2) [变量列表]:变量列表是用逗号分隔的lambda表达式所在函数的多个局部变量,默认情况下,捕获列表中所有变量均对函数局部变量进行拷贝,若变量名称前使用了&,则采用引用方式捕获。
3) [&]:隐式捕获列表,表示采用引用方式使用lambda表达式所在函数的局部变量。 4) [=]:隐式捕获列表,采用值捕获方式使用所在函数的局部变量。
5) [&, 变量列表]:变量列表中包含0个或多个lambda表达式所在函数的变量,对这些变量将采用值捕获方式进行操作,函数中其他的变量将采用引用捕获方式进行操作。
6) [=, 变量列表]:变量列表中包含0个或多个lambda表达式所在函数的变量,对这些变量将采用引用捕获方式进行操作,函数中其他的变量将采用值捕获方式进行操作。 15、
#include
template
public: virtual void first() = 0; virtual void next() = 0; virtual Item* currentItem() = 0; virtual bool isDone() = 0; virtual ~Iterator(){} };
template
template
class ConcreteIterator : public Iterator