★ push_back(value) : 마지막에 요소 추가
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v = {1, 2};
cout << "push_back 전 : ";
for (int i = 0 ; i < v.size() ; i++)
{
cout << v[i] << " ";
}
v.push_back(3); // 마지막에 3 추가
cout << "\npush_back 후 : ";
for (int i = 0 ; i < v.size() ; i++)
{
cout << v[i] << " ";
}
cout << endl;
return 0;
}
★ push_back() : 마지막 요소 제거
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v = {1, 2, 3};
cout << "pop_back 전 : ";
for (int i = 0 ; i < v.size() ; i++)
{
cout << v[i] << " ";
}
v.pop_back();
cout << "\npop_back 후 : ";
for (int i = 0 ; i < v.size() ; i++)
{
cout << v[i] << " ";
}
cout << endl;
return 0;
}
★ size() : 요소 개수 반환
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v = {1, 2, 3};
cout << "size : " << v.size() << endl;
return 0;
}
★ empty() : 비어 있는지 확인 | clear() : 모든 요소 제거
- 비어있으면 1, 아니면 0 반환
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v1 = {1, 2, 3};
if (!v1.empty())
{
cout << v1.empty() << endl;
cout << "v1 벡터가 비어있지 않아요!\n";
}
v1.clear(); // 벡터 모든 요소 제거
if (v1.empty())
{
cout << v1.empty() << endl;
cout << "v1 벡터가 비었어요!\n";
}
return 0;
}
★ at(index) : 인덱스로 접근 (범위 검사 포함)
- vector는 인덱싱이 가능하다고 했지? 길이가 3인 벡터가 있다고 가정해보자!
- 이때 v[100]을 사용하면 오류없이 이상한 값(?)에 접근이 가능해,,,,
- 근데 v.at(100)을 사용하면 예외가 발생해!!!!!!!!!!
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v = {1, 2, 3};
cout << "v[2] : " << v[2] << endl;
cout << "v[100] : " << v[100] << endl;
cout << "v.at(100) : " << v.at(100) << endl;
return 0;
}
★ insert(position, value) : 중간에 요소 삽입 | begin() : 시작 위치 | end() : 마지막 위치
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v = {1, 2, 3};
v.insert(v.begin() + 1, 100); // 처음(0) 위치 + 1 ==> {1, 2, 3}에서 1 다음 위치
for (int i = 0 ; i < v.size() ; i++)
{
cout << i << "번째 요소 : " << v[i] << endl;
}
cout << "==================\n";
v.insert(v.end() - 1, 200); // 마지막(3) 위치 - 1 ==> {1, 100, 2, 3}에서 3 이전 위치
for (int i = 0 ; i < v.size() ; i++)
{
cout << i << "번째 요소 : " << v[i] << endl;
}
return 0;
}
★ erase(position) : 요소 하나 제거 | erase(start, end) : 범위 제거
- 범위 제거는 end - 1 번째 요소까지 제거
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v = {1, 2, 3, 4, 5, 6};
v.erase(v.begin() + 1); // 1번째 요소 '2' 제거
for (int i = 0 ; i < v.size() ; i++)
{
cout << i << "번째 요소 : " << v[i] << endl;
}
cout << "==================\n";
v.erase(v.begin(), v.begin() + 2); // 0번째에서 1번째 요소 '1', '3' 제거
for (int i = 0 ; i < v.size() ; i++)
{
cout << i << "번째 요소 : " << v[i] << endl;
}
return 0;
}
★ resize(n) : 크기 조절
- 초기값 0으로 채움
- resize(n, value) : n크기로 resize하고, 초기값을 value로 채움
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v = {1, 2, 3};
v.resize(5); // 크기 5로 resize ==> 3, 4번째 요소 0으로 초기화
for (int i = 0 ; i < v.size() ; i++)
{
cout << i << "번째 요소 : " << v[i] << endl;
}
return 0;
}
★ reserve(n) : 용량 미리 확보 (재할당 줄임)
- 이 부분은 다음 글에서 다시 설명할게유,,,,,
★ swap() : 두 벡터 간 요소 교환
- 교환하려는 두 벡터의 데이터형이 같아야 함!!!
- 길이는 상관 없음
#include <iostream>
#include <vector>
int main()
{
using namespace std;
vector<int> v1 = {1, 2, 3};
vector<int> v2 = {4, 5};
v1.swap(v2);
cout << "v1 벡터\n";
for (int i = 0 ; i < v1.size() ; i++)
{
cout << i << "번째 요소 : " << v1[i] << endl;
}
cout<< "\nv2 벡터\n";
for (int i = 0 ; i < v2.size() ; i++)
{
cout << i << "번째 요소 : " << v2[i] << endl;
}
cout << endl;
return 0;
}
★ sort() : 정렬
- <algorithm> 헤더 사용
- 기본은 오름차순이지만, 정렬에 사용할 함수를 사용하여 내림차순 정렬도 가능 (C언어에서 qsort처럼!)
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
using namespace std;
vector<int> v1 = {1, 6, 8, 3, 5, 4, 7};
sort(v1.begin(), v1.end());
for (int i = 0 ; i < v1.size() ; i++)
{
cout << i << "번째 요소 : " << v1[i] << endl;
}
return 0;
}
'C++' 카테고리의 다른 글
[C++] vector 함수 - size | capacity | resize | reserve (0) | 2025.05.06 |
---|---|
[C++] array 객체와 vector 객체 (0) | 2025.05.06 |
[C++] 파일 입출력 (.txt 파일) (0) | 2025.05.05 |
[C++] cin.fail() | cin.clear() | cin.ignore() (0) | 2025.05.05 |
[C++] 문자열 | string을 전달인자로 하는 함수 (0) | 2025.05.02 |