我得到了这个代码(我知道它是西班牙语的,如果需要,我可以翻译)他们给了我函数 SumVec。该函数的作用是接收两个数组(整数指针)和一个整数(大小)作为参数,并返回一个指向两个向量或数组之和的指针。我必须转换它,以便它可以接收任何类型,而不仅仅是整数。我知道您通过使用“模板”使用模板来做到这一点,但我只做过简单的类,我不知道如何使用指针来做到这一点。有什么帮助吗?
编码
#include <iostream>
#include <cstdlib>
using namespace std;
int * sumVec(int*, int*, int);
int main() {
int n, nCol, nFil = 0;
//Arreglo unidimensional din�mico
int *ptr, *suma, size;
cout << "Cuantos Items va a procesar:";
cin >> size;
ptr = new int[size];//Asignando memoria al arreglo
//input
for (int i = 0;i<size;i++) {
cout << "Ingrese el numero de Items NO." << i + 1 << " :";
cin >> ptr[i];
}
//Mostrando el contenido del archivo
for (int i = 0;i<size;i++) cout << "\nItem. NO." << i + 1 << " :" << ptr[i];
cout << endl;
suma = sumVec(ptr, ptr, size);
//Mostrando el contenido de la suma
for (int i = 0;i<size;i++) cout << "\nSuma Item. NO." << i + 1 << " :" << suma[i];
cout << endl;
delete[]ptr;//Liberando la memoria asignada al arreglo unidimensional.
return 0;
}
int * sumVec(int* Array1, int* Array2, int Size){
int *ptr = new int[Size];
for(int i=0; i<Size; i++)
ptr[i]= Array1[i] + Array2[i];
return ptr;
}
就算你的目标是改写sumVec
功能,您只需用前缀你的函数template<typename T>
和更换每一个int
通过T
在你的函数。但我建议保留int
索引类型。
template<typename T>
T * sumVec(T* Array1, T* Array2, int Size) {
T *ptr = new T[Size];
for(int i=0; i<Size; i++)
ptr[i]= Array1[i] + Array2[i];
return ptr;
}
请注意,您必须在调用之前定义您的函数,例如https://ideone.com/ZAyCLs
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句