이번 포스팅은 c++ STL에 존재하는 vector의 erase에 대해서 간단히 정리하겠습니다.
먼저 vector에 대해서 간단히 설명드리면 vector는 c++에서 많이 사용하는 배열이라고 생각하시면 됩니다.
기존의 int* arr과 같은 정적 혹은 동적 배열의 경우 배열의 길이만큼 데이터가 모두 찾을 때 size를 늘리고 줄이고 하는 불편함이 존재합니다.
하지만 vector는 자동으로 size를 늘려주며 이외에도 size()함수를 통해 언제든지 현재 vector의 길이를 확인할 수 있는 등 다양한 편리한 기능을 제공합니다.
그럼 본격적으로 vector의 erase에 대해서 정리하겠습니다.
1. 1개의 매개변수
이처럼 하나의 매개변수만 사용하는 경우는 vector 내 해당 인덱스 데이터를 삭제합니다.
위에서 data.begin()은 data라는 vector의 첫번째 인덱스를 가리키는 말로 0번째 인덱스가 되고 여기서 2를 더한 값
즉 2번째 인덱스의 데이터를 삭제하라는 명령입니다.
결과적으로 data.at(2)에 해당하는 8 이라는 정수 데이터가 삭제 됩니다.
2. 2개의 매개변수
2개의 매개변수를 사용하는 경우 data라는 vector에 대하여 첫번째 매개변수 값을 가지는 인덱스부터 두번째 매개변수를 가지는 인덱스 미만까지의 데이터를 모두 삭제하는 방법입니다.
즉 위와 같이 data.begin() 인덱스 0부터
data.begin()+2 인덱스 2 미만까지
데이터를 모두 제거합니다.
여기서 중요한 것은
data.begin()~data.begin()+2 을
[0,2]로 생각하시고 3,5,8까지의 데이터가 지워지는 것으로 오해할 수 있는데
[0,2)로 3,5까지의 데이터만 지워지는 것입니다.
이상으로 vector의 erase 함수에 대한 정리를 마치겠습니다.
감사합니다!
'Algorithm > Samsung Pro & Ad' 카테고리의 다른 글
Sort 정렬 알고리즘 C++ (0) | 2019.01.10 |
---|