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함수 내에서 배열의 크기를 저장합니다.
'명품 C++ programming' 카테고리의 다른 글
명품 C++ programming 실습문제 10장 8번 (0) | 2019.05.12 |
---|---|
명품 C++ programming 실습문제 10장 7번 (0) | 2019.05.11 |
명품 C++ programming 실습문제 10장 5번 (1) | 2019.05.11 |
명품 C++ programming 실습문제 10장 4번 (0) | 2019.05.10 |
명품 C++ programming 실습문제 10장 3번 (0) | 2019.05.10 |