오븐 노트

[C++] vector #1 본문

Develop/C++

[C++] vector #1

오 븐 2023. 5. 18. 19:02
#include <iostream>
using namespace std;
#include <vector>

int main()
{
    // STL (Standard Template Library)
    // 프로그래밍 할 때 필요한 자료구조 / 알고리즘들을 템플릿으로 제공하는 라이브러리

    // 컨테이너(Container) : 데이터를 저장하는 객체 (자료구조 Data Structure)

    // vector (동적 배열)
    // - vector의 동작 원리 (size/capacity)
    // - 중간 삽입/삭제
    // - 처음/끝 삽입/삭제
    // - 임의 접근

    // 동적 배열
    /*int arr[100]; // 대충 예를 들어 이런 느낌
    int* arr2 = new int[100];
    delete arr2;
    arr2 = new int[1000];*/

    // 1) (여유분을 두고) 메모리를 할당한다
    // 2) 여유분까지 꽉 찼으면, 메모리를 증설한다

    // Q1) 여유분은 얼만큼이 적당한가
    // Q2) 증설을 얼만큼 해야하는가
    // Q3) 기존의 데이터를 어떻게 처리해야하는가

    vector<int> v(1000, 0); // 생성자 자체에서 초기 크기 지정 가능, 초깃값 지정 가능
    vector<int> v2 = v; // v에 있는 모든 특징을 v2에 복사 가능

    //v.resize(1000);
    cout << v.size() << " " << v.capacity() << endl;
    // size (실제 사용 데이터 개수)
    // 1 2 3 4 5 6 7....

    //v.reserve(1000); // 이사비용이 매번 드는것을 방지하기 위해 필요양을 미리 잡아둠
    // capacity (여유분을 포함한 용량 개수)
    // 1 2 3 4 6 9 13 19 28 42 63....

    for (int i = 0; i < 1000; i++)
    {
        //v[i] = 100; // 기존에 잡혀있는 영역을 접근하여 활용한다는 의미
        v.push_back(100); // 데이터를 추가한다는 의미
        cout << v.size() << " " << v.capacity() << endl;
    }


    v.front(); // 맨 처음에 있는 데이터를 꺼냄
    v.back(); // 마지막에 있는 데이터를 꺼냄
    v.pop_back(); // 데이터를 빼냄

    v.clear(); // size가 줄어도 capacity는 그대로 유지됨
    vector<int>().swap(v); // size가 줄었을 때 capacity까지 줄이고 싶을때 사용하는 방법. 임시 벡터를 생성하여 capacity를 줄이고 v벡터를 재생성 후 재이동
    cout << v.size() << " " << v.capacity() << endl;

    return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] vector #3  (0) 2023.05.29
[C++] vector #2  (0) 2023.05.29
[C++] 콜백 함수  (0) 2023.05.18
[C++] 템플릿 기초 #2  (0) 2023.05.03
[C++] 템플릿 기초 #1  (0) 2023.05.03