Vector


목차

  • vector container 란?
  • 1차원 vector의 선언
  • 2차원 vector의 선언
  • vector의 iterator
  • vector의 사용

vector container 란?


C++ 표준 템플릿 라이브러리 중의 하나인 템플릿 클래스이며, 동적 배열 구조를 C++로 구현한 것이다.

이것은 C의 배열(빠른 랜덤 접근이 가능한)처럼 행동하지만 자동으로 배열의 크기 조절과 객체의 추가와 삭제가 가능하다.


1차원 vector의 선언


    #include<vector>
    using namespace std;

    vector<int> v;              //int형 vector 생성 
                                //[]

    vector<int> v(4);           //int형 vector 생성 후 크기 4만큼 할당
                                //[0, 0, 0, 0]

    vector<int> v(4,2)          //int형 vector 생성 후 크기 4만큼 모든 값 2 할당
                                //[2, 2, 2, 2]

    vector<int> v = { 1, 2, 3 } // 백터 생성 후 오른쪽 변수 값으로 초기화
                                // [1, 2, 3]


2차원 vector의 선언


   
    #include<vector>
    using namespace std;

    vector< vector <int> >v (5, vector<int>(3, 0));     //5,3 사이즈의 2차원 배여 선언
                                                        //[
                                                        //[0, 0, 0],
                                                        //[0, 0, 0],
                                                        //[0, 0, 0],
                                                        //[0, 0, 0],
                                                        //[0, 0, 0]
                                                        //]
    vector<vector<int> > arr({                          //간단한 2차원 배열 만들기
        vector<int>( { 0, 1, 2 }),

        vector<int>( { 3, 7, 9, 11 }),

        vector<int>( { 4, 10, 14, 15 }),

        vector<int>( { 0, 4, 5, 6, 7 })
    });

vector의 iterator


    v.begin()   //백터 시작점의 주소 값 반환

    v.end()     //백터 (끝부분 + 1) 주소값 반환

vector의 사용


    #include<vector>
    using namespace std;

    vector<int> one(4);                             // [0, 0, 0, 0]

    vector< vector<int> > two(3, vector<int>(5));   //[[0, 0, 0, 0, 0]
                                                    // [0, 0, 0, 0, 0]
                                                    // [0, 0, 0, 0, 0]]

    //1. 새로운 값으로 초기화
    one[0] = 1;                                     // [1, 0, 0, 0]
    two[0][0] = 1;                                  //[[1, 0, 0, 0, 0]
                                                    // [0, 0, 0, 0, 0]
                                                    // [0, 0, 0, 0, 0]]

    //2. 마지막 원소 뒤에 값 추가하기
    one.push_back(5);                               // [1, 0, 0, 0, 5]
    two[0].push_back(5);                            //[[1,0,0,0,0,5]
                                                    // [0,0,0,0,0]
                                                    // [0,0,0,0,0]]
    //3. 중간에 원소 삽입하기
    one.insert(one.begin()+2, 3, 4)                 //2번 인덱스에 3개의 4 추가하기
                                                    // [1, 0, 4, 4, 4, 0, 0, 5]
    //4. 중간에 원소 삭제하고 뒤에 값 땡기기
    one.erase(one.begin() + 1)                      // 1번 인덱스 삭제 후 뒤에 값 땡김
                                                    //[1, 4, 4, 4, 0, 0, 5]

    //5. size 측정
    one.size()                                      //7
    two.size()                                      //3
    two[0].size()                                   //[1,0,0,0,0,5] -> 6

    //6 최대값, 최솟값, 인덱스 찾기
    int min = *min_elements(one.begin(), one.end());
    int max = *max_elements(one.begin(), one.end());

    int min_index = min_elements(one.begin(), one.end()) - one.begin();
    int max_index = max_elements(one.begin(), one.end()) - one.begin();
    

    //7. sort 사용하기  퀵 정렬 기반
    #include<algorithm>
    sort(one.begin(), one.end(), greater<int>());   //내림차순
    sort(one.begin(), one.end(), less<int>());      //오름차순





© 2019.04. by salmon2

Powered by theorydb