[개발 영어] clear / delete / remove / erase — 삭제 관련 필수 표현 (1편)
개발을 하다 보면 “삭제” 의미로 보이는 단어들이 자주 등장합니다. 하지만 clear / delete / remove / erase는 쓰임새와 뉘앙스가 다릅니다. 이 글은 빠르게 구분하고 실수 없이 쓰기 위한 실전 가이드입니다.
🔎 한눈에 비교
| 단어 | 핵심 의미 | 주 사용 맥락 | 짧은 예 |
|---|---|---|---|
| clear | 내용만 비움, 틀(구조)은 유지 | 컬렉션 초기화, 버퍼 비우기 | list.Clear() |
| delete | 완전히 제거 (흔히 개체/행 삭제) | 파일/DB 레코드 삭제, C++ 메모리 해제 | DELETE FROM Users... |
| remove | 특정 요소만 골라 제거 | 리스트/맵에서 일부 요소 제거 | list.Remove(2) |
| erase | 지워서 없앰(흔적 X) — C++ 관용 | C++ STL 컨테이너 | vec.erase(it) |
1) clear — 내용만 비우고 구조는 남긴다
- “초기화” 느낌. 컨테이너/버퍼 내부를 비움.
- 메모리 재할당 보장은 아님(구현에 따라 다름).
// C#
var list = new List<int> {1,2,3};
list.Clear(); // 리스트는 그대로, 원소만 없어짐
Console.WriteLine(list.Count); // 0
// JavaScript
const arr = [1,2,3];
arr.length = 0; // 배열 비우기 (clear에 해당)
2) delete — 완전히 없애버린다(컨텍스트에 주의)
- DB: 행(Row) 제거 — 테이블 구조는 유지
- C++: 동적 메모리 해제(
delete ptr;) - JavaScript: 객체의 “속성” 제거(배열 요소 삭제에 쓰면 구멍(hole) 생김)
-- SQL
DELETE FROM Users WHERE Id = 1; -- 특정 행만 삭제, 테이블은 유지
// JavaScript
const arr = [1,2,3];
delete arr[1]; // [1, <empty>, 3] ← 인덱스 자리는 남고 값만 비워져 "구멍" 발생 (권장 X)
Tip: JS 배열에서 요소 제거는arr.splice(index, 1)또는filter를 사용하세요.
3) remove — 일부만 골라 뺀다
- 컨테이너에서 특정 값/키/조건에 맞는 것만 제거.
// C#
var list = new List<int> {1,2,3,2,4};
list.Remove(2); // 첫 번째 2만 제거 → [1,3,2,4]
list.RemoveAll(x => x == 2); // 모든 2 제거 → [1,3,4]
var dict = new Dictionary<string,int> {["a"]=1, ["b"]=2};
dict.Remove("a"); // 키 "a"만 제거
// JavaScript
const arr = [1,2,3,2,4];
const removed = arr.filter(x => x !== 2); // 2만 제외해 새 배열 생성
4) erase — C++ STL에서 많이 쓰는 “지워서 없애기”
- C++ 컨테이너의 구간/원소 삭제에 사용(이터레이터 기반).
// C++
std::vector<int> v {1,2,3,2,4};
v.erase(v.begin() + 1); // 인덱스 1 원소(2) 제거 → {1,3,2,4}
// 조건부 제거: erase-remove idiom
v.erase(std::remove(v.begin(), v.end(), 2), v.end()); // 값 2 모두 제거
주의: C++std::remove는 “끝으로 밀기”만 하므로, 실제 삭제는erase로 마무리해야 합니다.
🧭 선택 가이드 (실무 기준)
- 컨테이너 내부만 비우고 싶다 →
clear - 특정 요소만 제거 →
remove(C++은erase또는 erase-remove) - 객체/행/자원 자체를 없애고 싶다 →
delete(DB의 행, 파일/레코드, C++ 메모리) - C++ STL 컨테이너에서 지우기 →
erase
자주 하는 실수
- JS에서
- SQL의
- JS에서
delete array[i]는 구멍이 남습니다 → splice나 filter로 제거하세요.- SQL의
DELETE는 “행” 삭제이고, 테이블 구조 삭제는 아닙니다(다음 편에서 TRUNCATE와 비교).
예문 (영/한)
- Clear the buffer before the next write. — 다음 쓰기 전에 버퍼를 비워 주세요.
- Delete the user whose status is inactive. — 비활성 사용자 레코드를 삭제하세요.
- Remove duplicated items from the list. — 리스트에서 중복 항목을 제거하세요.
- Erase the element at the iterator position. — 이터레이터가 가리키는 원소를 지워 주세요(C++).
📌 3줄 요약
- clear = 내용만 비우고 구조는 유지(초기화 느낌).
- remove = 일부 요소 선택 제거, delete = 개체/행 자체 삭제.
- erase = C++ 컨테이너에서 쓰는 실제 삭제(이터레이터/구간 기반).
👉 다음 편(2편)에서는 drop / truncate / reset / dispose로 DB & 자원 관리 관점의 “초기화/삭제”를 정리합니다.
'개발 영어 & 공부 > 영어 단어' 카테고리의 다른 글
| [개발 영어] enable / disable / toggle — 상태를 제어하는 동사들 (5편) (1) | 2026.01.09 |
|---|---|
| [개발 영어] set / assign / bind / map — 값을 “설정한다”의 차이 (4편) (0) | 2026.01.08 |
| [개발 영어] purge / wipe / flush — 흔적까지 지우는 초기화 (3편) (4) | 2025.08.26 |
| [개발 영어] drop / truncate / reset / dispose — 데이터와 리소스 초기화 (2편) (2) | 2025.08.26 |
| [개발 영어 시리즈] 개발자가 꼭 알아야 할 영어 단어 목록 (0) | 2025.08.26 |