728x90

벡터 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

 

728x90

+ Recent posts