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 사용
'C++ > STL' 카테고리의 다른 글
[STL] C++ priority_queue 우선순위 큐 (0) | 2020.04.07 |
---|---|
[STL] C++ queue 생성 및 삽입, 삭제 (0) | 2020.04.07 |
[STL] C++ stack 생성 및 삽입, 삭제 (0) | 2020.03.31 |
C++ pair 사용하여 쌍으로 값저장 (0) | 2020.03.31 |
C++ vector 오름차순, 내림차순 정렬 (0) | 2020.03.30 |