generated from d2learn/d2x-project-template
-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
参考代码要求
- 新建目录
src/chapter2/range,目录下新建range.cppm - 在
range.cppm中命名模块为mySTL.range并导出,同时在全局模块中导入后再导出 - 在
range.cppm中添加mySTL::range命名空间并导出 - 在
range.cppm的mySTL::range命名空间中添加针对普通数组和常量数组的begin/end自由函数重载:
begin:参数有T (&arr) [Size]*和const T (&arr) [Size]*的版本,返回数组第一个元素的指针end:参数有T (&arr) [Size]*和const T (&arr) [Size]*的版本,返回数组最后一个元素的地址的下一个地址的指针
- 在
range.cppm的mySTL::range命名空间中添加Range概念。要求至少满足以下两点中的一点:
- 对象有成员方法
begin和end,并且begin方法返回类型满足iterator::Iterator概念 - 对象有自由函数
begin和end的重载,并且begin函数返回类型满足iterator::Iterator概念
- 在
range.cppm的mySTL::range命名空间中添加IterRange概念。要求至少满足以下两点中的一点:
- 对象满足
Range概念,并且对象类型的退化类型(去除cv限定符、去除引用、函数对应函数指针,数组对应指向数组首地址的指针)的对象的begin成员方法的返回类型与end成员方法的返回类型一致 - 对象满足
Range概念,并且对象类型的退化类型(去除cv限定符、去除引用、函数对应函数指针,数组对应指向数组首地址的指针)的对象的begin自由函数重载的返回类型与end函数的返回类型一致
- 在
Array中添加成员方法begin和end,分为常量引用和非常量引用的版本
测试代码要求
基础部分
- 测试普通数组和常量数组符合
Range和IterRange概念,能正确通过begin和end接口获取迭代器 - 测试
Array符合Range和IterRange概念,能正确通过begin和end接口获取迭代器 - 测试
Array能够支持ranged-for循环
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Backlog