首页 > 其他分享 >运用模板重载二维数组

运用模板重载二维数组

时间:2023-10-20 20:12:02浏览次数:47  
标签:pT int ++ 二维 重载 Array col 模板 row

#include <iostream>
#include <array>
using namespace std;

//stack.h
template<typename T>
class Array
{
public:
	Array(int row,int col);
	T* operator[](int row);
public:
	T* m_pT;
	int m_Row;
	int m_Col;
};

template<typename T>
Array<T>::Array(int row,int col)
{
	m_Row = row;
	m_Col = col;
	m_pT = (T*)malloc(sizeof(T)*row*col);
	if (m_pT == NULL)
		return;
	for (int i = 0; i < row * col; i++)
		*(m_pT + i) = 0;
}

template<typename T>
T* Array<T>::operator[](int row)
{
	if (row < 0 || row >= m_Row)
		exit(OVERFLOW);

	return m_pT + row * m_Col;
}

bool Judge(Array<int> p)
{
	int row = p.m_Row;
	int col = p.m_Col;
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < col; j++)
		{
			int temp = p[i][j];
			for (int l = j + 1; j < col; j++)
			{
				if (temp == p[i][l])
					return true;
			}
			for (int l = i + 1; l < row; l++)
			{
				for (int m = 0; m < col; m++)
				{
					if (temp == p[l][m])
						return true;
				}
			}
		}
	}
	return false;
}

int main()
{
	int row, col;
	cin >> row >> col;
	Array<int>p(row, col);
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < col; j++)
		{
			cin >> p[i][j];
		}
	}

	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < col; j++)
		{
			cout << p[i][j] << " ";
		}
		cout << endl;
	}
	cout << p[row - 1][col - 1]<<endl;

	bool flag = Judge(p);
	if (flag == true)
		cout << "有重复的" << endl;
	else
		cout << "没有重复的" << endl;
}

  注意template的使用以及运算符的重载(返回值)

标签:pT,int,++,二维,重载,Array,col,模板,row
From: https://www.cnblogs.com/saucerdish/p/17777924.html

相关文章

  • SAP ALV模板
    效果图:ALV显示自动优化,更新后数据自动回写内表,日期栏位输入帮助,获取长文本数据  代码如下: REPORTZ_ALV_MODULE.TABLES:VEPO,EKKO,LIPS,LIKP.*ALV结构TYPES:BEGINOFTY_ALV,BOXTYPEC,ZFMKTYPEC,BOLNRTYPELIKP-BOLNR,VBELNTYPELIKP-VBELN,P......
  • 【模板】扩展 kmp (exkmp) / Z 函数
    求出一个字符串\(s\)的每个后缀与原串的LCP。首先由显然的SAM做法。考虑线性。考虑维护区间\([l,r]\)表示\([l,r]=[1,r-l+1]\)是最右的匹配段。考虑新的\(i\),如果满足\(l\leqi\leqr\),则\(i\)可以直接取\(i-l+1\)的答案继续扩展,否则继续扩展。最后更新区间。......
  • 2023-10-04:用go语言,现有一棵无向、无根的树,树中有 n 个节点,按从 0 到 n - 1 编号 给你
    2023-10-04:用go语言,现有一棵无向、无根的树,树中有n个节点,按从0到n-1编号给你一个整数n和一个长度为n-1的二维整数数组edges,其中edges[i]=[ai,bi]表示树中节点ai和bi之间存在一条边。每个节点都关联一个价格。给你一个整数数组price,其中price[i]是第i......
  • 运算符重载
    运算符重载1概述C++规定运算符重载必须针对类的对象,即重载时至少有一个参数是对象,如A、constA、A&等等。没有对象就new一个出来。C++用operator加运算符进行。对于普通运算符成员函数,this隐含参数代表第一个操作数对象。运算符可分为:不能重载:sizeof、.、.*、::、?:只能重......
  • C++零基础教程(函数重载)
    (文章目录)前言本篇文章来讲解函数重载,函数重载在C++中是非常重要的一个概念。一、概念讲解C++中的函数重载是指在同一个作用域中定义多个具有相同名称但参数列表不同的函数。函数重载允许使用相同的函数名来表示执行类似但具有不同参数类型或参数数量的操作。这样做可以提高......
  • 占位符导入模板excel, 再导出xlsx
    1、引入包`<dependency><groupId>org.apache.poi</groupId><artifactId>ooxml-schemas</artifactId><version>1.1</version></dependency><dependency><groupId>or......
  • 模板
    模板读写读入快读intread(){ints=0,f=1;charx=getchar();while(x<'0'||'9'<x)f=(x=='-')?-1:1,x=getchar();while('0'<=x&&x<='9')s=s*10+x-......
  • 【模板】二维计算几何初步
    template<classT>structpoint{Tx,y;point():point(0,0){}point(Tx,Ty):x(x),y(y){}friendpointoperator+(constpoint&lhs,constpoint&rhs){return{lhs.x+rhs.x,lhs.y+rhs.y};}friend......
  • C++ 模板特化与偏特化:解析与应用
    引言在C++中,模板是一种非常强大的特性,它们允许我们编写通用、可重用的代码。但有时,我们需要为某些特定的数据类型或类提供特殊的实现,这时就需要使用到模板特化(TemplateSpecialization)和模板偏特化(PartialTemplateSpecialization)。本文将深入探讨这两者的概念、用法和注意事项......
  • C#判断当前时间是否在规定时间段范围内(二维数组超简版)
    直接上C#代码TimeSpannowTime=DateTime.Now.TimeOfDay;string[,]arr={{"7:50","8:10"},{"9:55","10:15"},{"13:55","14:10"},{"15:55","16:10"},{"18:55",......