배열에서 특정 요소를 제거하는 방법을 소개합니다.
1. list를 이용한 방법
배열은 크기가 동적으로 변경되지 않기 때문에, 요소를 제거하려면 새로운 배열을 생성해야 합니다.
list는 동적으로 크기를 변경할 수 있기 때문에, 배열을 list로 변환하여 요소를 제거하고 다시 배열로 변환하는 방법이 있습니다.
아래 예제는 배열에서 30
을 삭제합니다.
#include <iostream>
#include <list>
int main() {
int arr[] = {10, 20, 30, 40};
// Convert array to list
std::list<int> list(std::begin(arr), std::end(arr));
// Remove an element
list.remove(30);
// Convert list to array
int newArr[list.size()];
std::copy(list.begin(), list.end(), newArr);
for (int i: newArr) {
std::cout << i << ' ';
}
return 0;
}
Output:
10 20 40
2. remove_if()로 여러 요소 제거하기
리스트의 remove_if()
를 이용하면 특정 조건에 일치하는 요소들을 모두 삭제할 수 있습니다.
아래 예제는 remove_if()
에 람다식을 전달하며, 30 미만인 요소들을 모두 제거합니다.
#include <iostream>
#include <list>
int main() {
int arr[] = {10, 20, 30, 40};
// Convert array to list
std::list<int> list(std::begin(arr), std::end(arr));
// Remove elements
list.remove_if([](int value){ return value < 30; });
// Convert list to array
int newArr[list.size()];
std::copy(list.begin(), list.end(), newArr);
for (int i: newArr) {
std::cout << i << ' ';
}
return 0;
}
Output:
30 40
Loading script...
Related Posts
- [C++] 배열을 리스트(list)로 변환
- [C++] 배열에서 특정 요소 제거
- [C++] vector 모든 요소의 합계 계산
- [C++] 두개의 배열이 같은지 비교
- [C++] 배열에 특정 요소가 있는지 확인
- [C++] 2차 배열 복사 방법
- [C++] 배열 복사하는 방법 (copy, memcpy)
- [C++] 함수의 인자로 배열 전달
- [C++] vector 모든 값의 평균 계산
- [C++] vector를 문자열로 변환
- [C++] 배열에서 요소의 Index 찾기
- [C++] 배열의 중복 요소 찾기
- [C++] 배열의 중복 요소 제거
- [C++] 배열 순서 거꾸로 뒤집기
- [C++] char 배열을 string으로 변환
- [C++] string을 char 배열로 변환
- [C++] 문자열 거꾸로 뒤집기
- [C++] vector의 중복 요소 제거
- [C++] 두 배열을 하나의 배열로 합치기
- [C++] 배열 길이, 크기 얻는 방법
- [C++] 배열에서 최대값, 최소값 찾기 (3가지 방법)
- [C++] int를 string으로 변환, 3가지 방법
- [C++] 문자열 리스트(Vector, 배열) 정렬
- [C++] string의 문자 정렬
- [C++] string을 int로 변환, 3가지 방법
- [C++] string 대문자/소문자 변환 방법
- [C++] string.compare() 문자열 비교
- [C++] int를 char로 변환, 3가지 방법
- [C++] 문자열 자르기, 3가지 방법
- [C++] isdigit(), 어떤 문자가 숫자인지 확인
- [C++] strlen(), 문자열 길이 계산
- [C++] strcmp(), strncmp() 함수로 문자열 비교
- [C++] strstr(), 특정 문자열 찾기