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
You can’t perform that action at this time.
参考代码要求
src/chapter2/range,目录下新建range.cppmrange.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循环