1. 문제

 

6. 다음 함수는 매개 변수로 주어진 int 배열 src에서 배열 minus에 들어있는 같은 정수를 모두 삭제한 새로운 int 배열을 동적으로 할당받아 리턴한다. retSize는 remove() 함수의 실행 결과를 리턴하는 배열의 크기를 전달받는다.

 

템픔릿을 이용하여 remove를 일반화하라.

 

 

2. 결과

 

 

3. 코드

#include <iostream>
using namespace std;

template <class T>
T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int& retSize) {
	int count = 0, choice = sizeMinus;
	T* re = new T;

	for (int i = 0; i<sizeSrc; i++) {
		for (int j = 0; j<sizeMinus; j++)
			if (src[i] != minus[j]) choice--;

		if (choice == 0) {
			re[count] = src[i];
			count++;
		}
		choice = sizeMinus;
	}
	retSize = count;
	return re;
}

int main() {
	int x[] = { 1, 10, 100, 5, 4 };
	int y[] = { 4, 6, 10, 9 };
	int size = 0;
	int* result = remove(x, 5, y, 4, size);

	for (int i = 0; i<size; i++)
		cout << result[i] << ' ';
	cout << endl;
}

 

4. 설명

 

x배열의 각 원소들을 for문으로 각 y원소들과 비교하여 제거할지를 판단합니다.

 

size 변수는 remove함수 내에서 배열의 크기를 저장합니다.

 

+ Recent posts