std::vector
사용법std::vector
는 C++ 표준 라이브러리에서 제공하는 동적 배열로, 크기가 가변적이며 다양한 편리한 기능을 제공합니다. 이번 포스트에서는 std::vector
의 기본 사용법과 다양한 기능을 예제를 통해 살펴보겠습니다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
// 첫 번째 블록: 기본 초기화
{
// 크기가 10인 벡터를 선언하고, 기본 값(0)으로 초기화
vector<int> vec(10);
for (int i = 0; i < vec.size(); ++i)
{
cout << vec[i] << endl; // 0 출력 (10번)
}
}
// 두 번째 블록: 벡터 크기 조절과 초기화
{
// 크기가 5이고 모든 요소가 2로 초기화된 벡터 선언
vector<int> vec(5, 2);
for (int num : vec)
cout << num << endl; // 2 출력 (5번)
// 벡터 크기를 10으로 조절하고, 새로 추가된 요소를 20으로 초기화
vec.resize(10, 20);
for (int num : vec)
cout << num << endl; // 2 출력 (5번), 20 출력 (5번)
}
// 세 번째 블록: 벡터 요소 추가
{
vector<int> vec;
cout << vec.size() << endl; // 0 출력 (빈 벡터)
vec.push_back(10); // 벡터에 10 추가
cout << vec.size() << endl; // 1 출력 (요소 하나 추가됨)
cout << vec[0] << endl; // 10 출력
}
// 네 번째 블록: 벡터의 동적 재할당
{
vector<int> vec;
for (int i = 0; i < 10; ++i)
{
vec.push_back(i); // 벡터에 요소 추가
cout << vec.size() << endl; // 현재 벡터 크기 출력
cout << vec.data() << endl; // 벡터의 데이터 주소 출력 (재할당 시 주소 변경)
}
}
// 다섯 번째 블록: 벡터의 첫 번째와 마지막 요소 접근
{
vector<int> vec{ 1, 2, 3 };
cout << vec.front() << endl; // 첫 번째 요소 (1) 출력
cout << vec.back() << endl; // 마지막 요소 (3) 출력
}
// 여섯 번째 블록: 벡터의 요소 교환
{
vector<int> vec0{ 1, 2, 3 };
vector<int> vec1{ 3, 2, 1 };
vec0.swap(vec1); // vec0과 vec1의 요소 교환
// vec0 : 3, 2, 1
// vec1 : 1, 2, 3
}
// 일곱 번째 블록: 벡터의 복사
{
vector<int> vec0{ 1, 2, 3 };
vector<int> vec1{ 3, 2, 1 };
vec0 = vec1; // vec1의 내용을 vec0에 복사
// vec0 : 3, 2, 1
// vec1 : 3, 2, 1
}
// 여덟 번째 블록: 벡터 비교
{
vector<int> vec0{ 1, 2, 3 };
vector<int> vec1{ 3, 2, 1 };
if (vec0 == vec1)
cout << "=="; // 벡터가 같으면 출력
if (vec0 > vec1)
cout << ">"; // vec0이 vec1보다 크면 출력
if (vec0 < vec1)
cout << "<"; // vec0이 vec1보다 작으면 출력
}
return 0;
}
첫 번째 블록에서는 벡터의 기본 초기화를 보여줍니다.
{
// 크기가 10인 벡터를 선언하고, 기본 값(0)으로 초기화
vector<int> vec(10);
for (int i = 0; i < vec.size(); ++i)
{
cout << vec[i] << endl; // 0 출력 (10번)
}
}
두 번째 블록에서는 벡터의 크기를 조절하고 초기화하는 방법을 다룹니다.
{
// 크기가 5이고 모든 요소가 2로 초기화된 벡터 선언
vector<int> vec(5, 2);
for (int num : vec)
cout << num << endl; // 2 출력 (5번)
// 벡터 크기를 10으로 조절하고, 새로 추가된 요소를 20으로 초기화
vec.resize(10, 20);
for (int num : vec)
cout << num << endl; // 2 출력 (5번), 20 출력 (5번)
}
resize
를 사용하여 벡터의 크기를 10으로 조절하고, 새로 추가된 요소를 20으로 초기화합니다.세 번째 블록에서는 벡터에 요소를 추가하는 방법을 설명합니다.
{
vector<int> vec;
cout << vec.size() << endl; // 0 출력 (빈 벡터)
vec.push_back(10); // 벡터에 10 추가
cout << vec.size() << endl; // 1 출력 (요소 하나 추가됨)
cout << vec[0] << endl; // 10 출력
}
push_back
을 사용하여 요소를 추가합니다.네 번째 블록에서는 벡터의 동적 재할당을 설명합니다.
{
vector<int> vec;
for (int i = 0; i < 10; ++i)
{
vec.push_back(i); // 벡터에 요소 추가
cout << vec.size() << endl; // 현재 벡터 크기 출력
cout << vec.data() << endl; // 벡터의 데이터 주소 출력 (재할당 시 주소 변경)
}
}
data
를 사용하여 벡터의 데이터 주소를 출력하면, 재할당이 발생할 때마다 주소가 변경되는 것을 확인할 수 있습니다.다섯 번째 블록에서는 벡터의 첫 번째와 마지막 요소에 접근하는 방법을 설명합니다.
{
vector<int> vec{ 1, 2, 3 };
cout << vec.front() << endl; // 첫 번째 요소 (1) 출력
cout << vec.back() << endl; // 마지막 요소 (3) 출력
}
front
를 사용하여 벡터의 첫 번째 요소에 접근합니다.back
을 사용하여 벡터의 마지막 요소에 접근합니다.여섯 번째 블록에서는 벡터의 요소를 교환하는 방법을 설명합니다.
{
vector<int> vec0{ 1, 2, 3 };
vector<int> vec1{ 3, 2, 1 };
vec0.swap(vec1); // vec0과 vec1의 요소 교환
// vec0 : 3, 2, 1
// vec1 : 1, 2, 3
}
swap
을 사용하여 두 벡터의 요소를 교환합니다.일곱 번째 블록에서는 벡터를 복사하는 방법을 설명합니다.
{
vector<int> vec0{ 1, 2, 3 };
vector<int> vec1{ 3, 2, 1 };
vec0 = vec1; // vec1의 내용을 vec0에 복사
// vec0 : 3, 2, 1
// vec1 : 3,
2, 1
}
=
연산자를 사용하여 한 벡터의 내용을 다른 벡터에 복사합니다.여덟 번째 블록에서는 벡터를 비교하는 방법을 설명합니다.
{
vector<int> vec0{ 1, 2, 3 };
vector<int> vec1{ 3, 2, 1 };
if (vec0 == vec1)
cout << "=="; // 벡터가 같으면 출력
if (vec0 > vec1)
cout << ">"; // vec0이 vec1보다 크면 출력
if (vec0 < vec1)
cout << "<"; // vec0이 vec1보다 작으면 출력
}
==
, >
, <
연산자를 사용하여 벡터를 비교할 수 있습니다.