使用模板创建二维数组
来源:互联网 发布:淘宝卖家国际转运服务 编辑:程序博客网 时间:2024/06/06 23:57
/*使用模板类创建数组 以及 二维数组(模板类递归)*/#include <iostream>using namespace std;template<typename T = int, size_t S = 5> //默认类型参数 和 非类型参数(只能传递常量/常变量/常量表达式)class Array{private:T m_array[S];public:/*操作符[]重载,两个函数可以重载第一个函数:形参:可以传入常量、变量,但是不能改num的值 返回值: 可以做左值 函数:非const对象调用第二个函数:形参:可以传入常量、变量,但是不能改num的值 返回值: 不能左值 函数:非const对象和const对象都可调用*/T& operator[](const size_t& num){return m_array[num];}const T& operator[](const size_t& num)const{return const_cast<Array*>(this)->m_array[num];}/*形参: 加上&:表示减少拷贝,可以“双向传递”但是不能引用常量和常变量 加上&和const: 可以引用常量和常变量 ,但是num不能改变返回值: 加上&:减少拷贝 可以做左值(“双向传递”),但是必须引用全局/堆区/静态区的变量 加上const和&:返回值不能做左值,但是可以引用常量和常变量。函数: 加上const: 表示只有const对象能调用const函数。*/};int main() { const int row = 3, col = 4; Array<Array<int, col>, row> arr; //使用模板类递归,创建int型的3行4列二维数组Array<Array<double, col>, row> arr2; //使用模板类递归,创建double型的5行4列二维数组Array<Array<double> > arr3; //使用默认的非类型参数Array<Array<> > arr4; //使用默认的类型参数 和 非类型参数/*数组赋值 和 打印数组*/for(int i = 0; i< row; i++){for(int j = 0; j < col; j++){arr[i][j] = i * j;}}for(int i = 0; i< row; i++){for(int j = 0; j < col; j++){cout<< arr[i][j] << " ";}cout << endl;} return 0; }
0 0
- 使用模板创建二维数组
- 模板:使用new delete 创建二维数组
- 如何动态创建和使用二维数组
- 如何动态创建和使用二维数组
- 使用vector容器创建二维数组
- 使用new和delete创建二维数组
- 使用STL:vector创建二维数组
- 二维树状数组模板
- 二维数组旋转模板
- 二维树状数组模板
- 【模板】二维树状数组
- 二维树状数组模板
- 二维树状数组模板
- 二维树状数组模板
- 模板二维数组
- 动态创建二维数组
- 动态创建二维数组
- 创建二维数组
- 清除移动端网站点击a标签时闪现的边框或遮罩层(CSS)
- SQL查询
- inotify-tools使用
- linux系统SSH免密码登录--已解决
- 第五届蓝桥杯省赛解题报告--神奇算式
- 使用模板创建二维数组
- Java数组,去掉重复值、增加、删除数组元素
- thinkphp #65279 出现小块空白
- 两个数实现交换
- EventBus抛异常了,不能在子线程更新UI。
- mysql 分组排序
- sp_addlinkedserver 'QPAccountsDBLink', 'QPAccountsDBLink', 'SQLNCLI','(local)',null,null,'QPAccounts
- idea 集成gradle(一)hello world
- php获取指定目录下的目录及文件