개발 영어 & 공부/영어 단어

[개발 영어] clear / delete / remove / erase — 삭제 관련 표현 정리 (1편)

runtime-income 2025. 8. 26. 11:09

[개발 영어] 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에서 delete array[i]는 구멍이 남습니다 → splicefilter로 제거하세요.
- 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줄 요약

  1. clear = 내용만 비우고 구조는 유지(초기화 느낌).
  2. remove = 일부 요소 선택 제거, delete = 개체/행 자체 삭제.
  3. erase = C++ 컨테이너에서 쓰는 실제 삭제(이터레이터/구간 기반).

👉 다음 편(2편)에서는 drop / truncate / reset / dispose로 DB & 자원 관리 관점의 “초기화/삭제”를 정리합니다.