std::vector

Jaemyeong Lee·2024년 8월 7일
0

FastCampusC++

목록 보기
36/78

C++ 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;
}

1. 기본 초기화

첫 번째 블록에서는 벡터의 기본 초기화를 보여줍니다.

{
    // 크기가 10인 벡터를 선언하고, 기본 값(0)으로 초기화
    vector<int> vec(10);
    for (int i = 0; i < vec.size(); ++i)
    {
        cout << vec[i] << endl; // 0 출력 (10번)
    }
}
  • 크기가 10인 벡터를 선언하고, 모든 요소를 기본 값(0)으로 초기화합니다.
  • 벡터의 요소를 순차적으로 출력합니다.

2. 벡터 크기 조절과 초기화

두 번째 블록에서는 벡터의 크기를 조절하고 초기화하는 방법을 다룹니다.

{
    // 크기가 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번)
}
  • 크기가 5이고 모든 요소가 2로 초기화된 벡터를 선언합니다.
  • resize를 사용하여 벡터의 크기를 10으로 조절하고, 새로 추가된 요소를 20으로 초기화합니다.

3. 벡터 요소 추가

세 번째 블록에서는 벡터에 요소를 추가하는 방법을 설명합니다.

{
    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을 사용하여 요소를 추가합니다.
  • 벡터의 크기와 첫 번째 요소를 출력합니다.

4. 벡터의 동적 재할당

네 번째 블록에서는 벡터의 동적 재할당을 설명합니다.

{
    vector<int> vec;
    for (int i = 0; i < 10; ++i)
    {
        vec.push_back(i); // 벡터에 요소 추가
        cout << vec.size() << endl; // 현재 벡터 크기 출력
        cout << vec.data() << endl; // 벡터의 데이터 주소 출력 (재할당 시 주소 변경)
    }
}
  • 벡터에 요소를 반복적으로 추가하면, 필요한 경우 벡터의 크기가 동적으로 재할당됩니다.
  • data를 사용하여 벡터의 데이터 주소를 출력하면, 재할당이 발생할 때마다 주소가 변경되는 것을 확인할 수 있습니다.

5. 벡터의 첫 번째와 마지막 요소 접근

다섯 번째 블록에서는 벡터의 첫 번째와 마지막 요소에 접근하는 방법을 설명합니다.

{
    vector<int> vec{ 1, 2, 3 };
    cout << vec.front() << endl; // 첫 번째 요소 (1) 출력
    cout << vec.back() << endl; // 마지막 요소 (3) 출력
}
  • front를 사용하여 벡터의 첫 번째 요소에 접근합니다.
  • back을 사용하여 벡터의 마지막 요소에 접근합니다.

6. 벡터의 요소 교환

여섯 번째 블록에서는 벡터의 요소를 교환하는 방법을 설명합니다.

{
    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을 사용하여 두 벡터의 요소를 교환합니다.
  • 교환 후 각 벡터의 요소가 변경된 것을 확인할 수 있습니다.

7. 벡터의 복사

일곱 번째 블록에서는 벡터를 복사하는 방법을 설명합니다.

{
    vector<int> vec0{ 1, 2, 3 };
    vector<int> vec1{ 3, 2, 1 };
    vec0 = vec1; // vec1의 내용을 vec0에 복사
    // vec0 : 3, 2, 1
    // vec1 : 3, 

2, 1
}
  • = 연산자를 사용하여 한 벡터의 내용을 다른 벡터에 복사합니다.
  • 복사 후 두 벡터의 요소가 동일해집니다.

8. 벡터 비교

여덟 번째 블록에서는 벡터를 비교하는 방법을 설명합니다.

{
    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보다 작으면 출력
}
  • ==, >, < 연산자를 사용하여 벡터를 비교할 수 있습니다.
  • 벡터의 요소를 사전순으로 비교하여 결과를 출력합니다.
profile
李家네_공부방

0개의 댓글