C++

[C++]명품 C++ 프로그래밍 실습문제 10장 6번

Hs’s Coding vlog 2023. 1. 25. 21:36

[C++]명품 C++ 프로그래밍 실습문제 10장 6번

[C++]명품 C++ programming 실습문제 10장 6번

명품 C++ 프로그래밍실습문제/연습문제 /C++

#include <iostream>
#include <vector>
#include <string>
#include <ctime>
#include<cstdlib>
using namespace std;
template <class T>
T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int& retsize);
int main() {
	int retsize=0;

	int src[4] = { 1,2,3,4 };
	int minus[4] = { 1,2,3,0 };
	
	int *q = remove(src, 4, minus, 4, retsize);
	//cout << retsize << " ";
	for (int i = 0; i < retsize; i++)
	{
		cout << q[i] << " ";
	}
	cout << endl;

	return 0;
}
template <class T>
T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int& retsize) {
	int maxsize,minsize;
	T* q = new T[retsize];//이런식으로 동적할당하는 방법 기억해두자
	if (sizeSrc > sizeMinus)
	{
		maxsize = sizeSrc;
		minsize = sizeMinus;
		for (int i = 0; i < maxsize; i++) {
			for (int j = 0; j < minsize;j++) {
				if (src[i] == minus[j]) q[retsize++] = src[i];
			}
		}
	}
	else {
		maxsize = sizeMinus;
		minsize = sizeSrc;
		for (int i = 0; i < maxsize; i++) {
			for (int j = 0; j < minsize;j++) {
				if (minus[i] == src[j]) q[retsize++] = src[i];
			}
		}
	}
	return q;
}