Programación orientada a objetos C ++ 034: goodcopy ---- (Mooc de la Universidad de Pekín)


Enlace de blog especial

Blog de ejercicios después de la clase de C ++ POJ de la Universidad de Pekín Registro completo de soluciones


Titulo original

Inserte la descripción de la imagen aquí

#include <iostream>
using namespace std;


template <class T>
struct GoodCopy {
    
    
// 在此处补充你的代码
};

int a[200];
int b[200];
string c[200];
string d[200];

template <class T>
void Print(T s,T e) {
    
    
	for(; s != e; ++s)
		cout << * s << ",";
	cout << endl;
}

int main()
{
    
    
	int t;
	cin >> t;
	while( t -- ) {
    
    
		int m ;
		cin >> m;
		for(int i = 0;i < m; ++i)
			cin >> a[i];
		GoodCopy<int>()(a,a+m,b);
		Print(b,b+m);
		GoodCopy<int>()(a,a+m,a+m/2);
		Print(a+m/2,a+m/2 + m);

		for(int i = 0;i < m; ++i)
			cin >> c[i];
		GoodCopy<string>()(c,c+m,d);
		Print(c,c+m);
		GoodCopy<string>()(c,c+m,c+m/2);
		Print(c+m/2,c+m/2 + m);
	}
	return 0;
}

Análisis de citas hacia adelante

Debido a
que también soy un principiante en C ++, es inevitable que haya varios problemas y no pueda entender algunos lugares. Por ejemplo, para estas dos preguntas, no puedo entender dos lugares y me quedo atascado toda la noche y esto Mañana.

El análisis aquí es solo para mi enojo. No puedo entender por qué está escrito así.
Si hay un error, señale que, de hecho, hay varios paréntesis que me hacen sentir muy abrupto.

GoodCopy<int>()(a,a+m,b);

Mi entendimiento actual es que hay un corchete GoodCopy () aquí porque llama a la función predeterminada para
generar un objeto temporal porque nuestros corchetes necesitan generar un objeto temporal antes de que podamos usar ()

Y si no agregamos paréntesis, ni siquiera tenemos paréntesis para sobrecargar el objeto y no podemos usarlo.


Código

    public:
    void operator()(const T* startptr,T* endptr,T* setptr)
    {
    
    
        T* temp = endptr-1;
        setptr += (endptr - startptr-1);
        for(;temp >= startptr;temp--,setptr--)
            *setptr = *temp;
    }

Supongo que te gusta

Origin blog.csdn.net/qq_37500516/article/details/115015945
Recomendado
Clasificación