벡터 v에서 i번째 원소를 삭제하고 싶다면
erase 함수를 사용하면 된다.
erase 함수의 인자는 iterator 즉, 지우고 싶은 원소의 주소이다.
http://www.cplusplus.com/reference/vector/vector/erase/
vector::erase - C++ Reference
123456789101112131415161718192021222324 // erasing from vector #include #include int main () { std::vector myvector; // set some values (from 1 to 10) for (int i=1; i<=10; i++) myvector.push_back(i); // erase the 6th element myvector.erase (myvector.begin(
www.cplusplus.com
벡터 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
[C++] 라이브러리, 벡터 클래스, 동적 할당
만약에 입력으로 n을 입력받아 크기가 n인 배열을 만들고 싶다면 어떻게 해야 할까? int n; cin >> n; int arr[n]; 이렇게 하면 될까? 이렇게 선언하면 컴파일 에러가 나는 것을 볼 수 있다. 배열의 크기를 나타..
breakcoding.tistory.com
'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 |