728x90
벡터 v에서 i번째 원소를 삭제하고 싶다면
erase 함수를 사용하면 된다.
erase 함수의 인자는 iterator 즉, 지우고 싶은 원소의 주소이다.
http://www.cplusplus.com/reference/vector/vector/erase/
벡터 v의 시작 주소는 v.begin()이다. i번째 원소의 주소는 v.begin() + i 라고 하면 된다.
따라서 벡터 v의 i번째 인덱스에 있는 원소를 삭제하고 싶을 때에는
v.erase(v.begin() + i);
이렇게 쓰면 된다.
v[5]를 지우고 싶다면
v.erase(v.begin() + 5);
이렇게 하면 된다.
코드로 보자면 아래 코드를 실행하면
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v(10);
for (int i = 0; i < 10; i++) {
v[i] = i;
}
cout << "지우기 전: ";
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
v.erase(v.begin() + 5);
cout << "5번 인덱스 지운 후: ";
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
return 0;
}
다음과 같이 5번 인덱스에 저장되어 있던 5가 삭제된다.
벡터 클래스의 더 많은 함수들을 알고 싶다면 아래 링크에 있는 포스팅을 참고하면 된다.
https://breakcoding.tistory.com/139
728x90
'C++' 카테고리의 다른 글
[C++] 포인터와 동적 메모리 할당 (포인터 심화2) (2) | 2020.03.31 |
---|---|
[C++] 벡터, 배열에서 최댓값, 최솟값 찾기 (min_element, max_element) (0) | 2020.03.23 |
[C++] 포인터와 배열 (포인터 심화) (0) | 2020.03.19 |
[C++] 배열 초기화, 벡터 초기화, fill 함수 (0) | 2020.03.14 |
[C++] next_permutation 이용해서 순열 구하기 (0) | 2020.02.19 |