C++ vector 생성 및 삽입, 삭제




결과1

결과






코드1

#include <string>
#include <vector>
#include <iostream>
using namespace std;

int main() {

	vector<int> v(5, 1);	// length = 5 개를 1로 초기화
	vector<string> v2;
	if (v2.empty()) cout << "벡터가 비어있습니다.\n";	// 비어있는지 검사

	for (int a : v) {
		cout << a << " ";
	}
	cout  <<"\n";


	v2.push_back("dsa");	// 맨뒤에 삽입한다.
	v2.push_back("abc");
	v2.push_back("gsd");
	v2.push_back("gsa");
	v2.push_back("eqw");
	v2.push_back("yert");
	v2.pop_back();	// 맨뒤를 삭제한다.

	for (string a : v2) {
		cout << a << " ";
	}

	// vector에서 맨 앞 요소와 맨 뒤요소를 가져온다.
	cout << "\n" << v2.front() << " " << v2.back() << "\n";	

	return 0;
}




vector 생성

- 8라인을 보면 벡터를 생성하면서 초기화 해주고 있다.

v(5, 1) : 5 size 만큼 1로 초기화 해준다.


- 초기값이 없을 경우는 9라인처럼 선언만 해주면 된다.




empty() : 비어있는지 검사한다.

- 비어있으면 true를 아니면 false를 리턴한다.




clear() : vector를 비운다.




push_back() : 맨뒤에 요소 삽입

pop_back() : 맨뒤에 요소 삭제

- vector에서 요소를 삽입, 삭제할 때 주로 사용한다.


- 맨 뒤에 삽입, 삭제를 함으로써, 가장 마지막의 들어온 것이 가장 먼저나가는(후입선출) 구조인 스택처럼 사용할 수도 있다.





front() : 맨 앞의 요소 가져옴

back() : 맨 뒤의 요소 가져옴






vector 요소 중간의 삽입, 삭제, 배열 삽입




결과2

결과2





코드2

#include <string>
#include <vector>
#include <iostream>
using namespace std;

int main() {
	vector<int> v(3, 1);
	vector<int>::iterator it = v.begin();

	cout << "1. 초기화 : ";
	for (int n : v) cout << n << " ";
	cout << "\n";

	it = v.insert(it, 2);
	cout << "2. 맨앞에 삽입 : ";
	for (int n : v) cout << n << " ";
	cout << "\n";

	it = v.insert(it, 2, 3);
	cout << "3. 맨앞에 여러개 삽입 : ";
	for (int n : v) cout << n << " ";
	cout << "\n";

	it = v.insert(it+3, 2, 4);
	cout << "4. 3번째부터 여러개 삽입 : ";
	for (int n : v) cout << n << " ";
	cout << "\n";


	int arr[] = { 5, 50, 500, 5000};

	it = v.insert(v.begin(), arr, arr+4);
	cout << "5. 맨앞의 배열 삽입 : ";
	for (int n : v) cout << n << " ";
	cout << "\n";

	// 1<= 삭제 < 4 인걸 주의해야 한다.
	v.erase(v.begin() + 1, v.begin() + 4);
	cout << "6. 1~3까지 삭제 : ";
	for (int n : v) cout << n << " ";
	cout << "\n";

	return 0;
}




insert() : 위치를 지정하여 삽입

- 삽입할 위치는 it로 지정된다. iterator를 따로 선언하지 않고 그냥 v.begin()을 사용하는 것이 덜 헷갈린다.


- 4번을 보면 it+3을 해주 3번째부터 2개의 4를 삽입하는 것을 볼 수 있다.


- 5번을 보면 int형 배열을 삽입해준다. 그 때 insert의 인수로는

insert(vector 삽입할 위치, 배열 삽입 시작위치, 배열 삽입 끝위치) 이다.

5번에서는 배열 arr의 0~4 (4는 포함안됨) 를 삽입해 준것이다.





erase() : 위치를 지정하여 삭제

- insert() 와 마찬가지로 위치를 지정해주면 삭제한다.


- 주의 할점은 범위로서 6번에서 

erase(v.begin()+1, v.begin()+4); 를 해줌으로써 vector의 1~3요소가 삭제되었다.

, 1 <= 삭제 < 4 로 마지막은 포함되지 않는다.





추가 내용


정렬


링크

[C++/STL] - C++ vector 오름차순, 내림차순 정렬





pair을 사용하여 2개씩 값 저장


링크

[C++/STL] - C++ vector and pair 사용




+ Recent posts