오븐 노트

[C++] vector #2 본문

Develop/C++

[C++] vector #2

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

int main()
{
    // 컨테이너(Container): 데이터를 저장하는 객체

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

    // 반복자(Iterator) : 포인터와 유사한 개념. 컨테이너의 원소(데이터)를 가리키고, 다음/이전 원소로 이동 가능
    vector<int> v(10);

    for (vector<int>::size_type i = 0; i < v.size(); i++) // 벡터 한정으로는 iterator 포문과 큰 차이 없음
        v[i] = i;

    //vector<int>::iterator it;
    //int* ptr;

    //it = v.begin();
    //ptr = &v[0];

    //cout << (*it) << endl;
    //cout << (*ptr) << endl;

    //int a = 1;
    //int b = a++; // (b = 1, a = 2)
    //int c = ++a; // (a = 2, a = 2)

    //it++;
    //++it;
    //ptr++;
    //++ptr;

    //it--;
    //--it;
    //ptr--;
    //--ptr;

    //it += 2;
    //it = it - 2;
    //ptr += 2;
    //ptr = ptr - 2;

    vector<int>::iterator itBegin = v.begin();
    vector<int>::iterator itEnd = v.end(); // 데이터의 끝을 가리키기 때문에 데이터를 조작하면 절대 안되고 끝을 판별할 때 사용됨

    // 더 복잡해보이는데 사용하는 이유
    // 다른 컨테이너는 v[i]와 같은 인덱스 접근이 안 될 수도 있음
    // iterator는 vector 뿐 아니라, 다른 컨테이너에도 공통적으로 있는 개념
    // 때문에 다른 컨테이너. 자료구조로 이동하기 수월함
    for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) // iterator를 사용 할 때는 it++이 아닌 ++it가 아주 약간 성능에 도움이 된다.
    {
        cout << (*it) << endl;
    }

    int* ptrBegin = &v[0]; // v.begin._Ptr;
    int* ptrEnd = ptrBegin + 10; // v.end()._Ptr;
    for (int* ptr = ptrBegin; ptr != ptrEnd; ++ptr)
    {
        cout << (*ptr) << endl;
    }

    // const int*;
    // vector<int>::const_iterator cit1 = v.cbegin();
    // *cit1 = 100; // const 형태이기 때문에 수정 불가

    // 역방향 문법
    for (vector<int>::reverse_iterator it = v.rbegin(); it != v.rend(); ++it)
    {
        cout << (*it) << endl;
    }

    return 0;
}

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

 

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

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

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