ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • vector<STL> 사용하기(2)
    @ 16. 1 ~ 17. 1/STL 2013. 3. 18. 23:18

    저장방식은 배열과 비슷하다. 그러나 차이점이라고는 크기의 조절이 가능하고 앞 뒤의 추가 삭제가 자유롭다는 것이다.

    vector 사용방법

    1. 헤더파일 #include<vector>를 포함한다.

    2. vector<데이터타입> 변수이름

      vector<int> vector1;

      vector<int> *vector2 = new vecotr<int>;

     

    자세한 멤버는 따로 확인이 필요하고..자주 사용하는 것을 알아보겠음.

    push_back() : 마지막 위치에 데이터 추가

    vector<int> vector1;

    vector1.push_back(1);

     

    pop_back() : 마지막 위치의 데이터 삭제

    bector1.pop_back();

     

    begin() : 첫 번째 위치반복자 반환

    vector<int>::iterator iterBegin = vector1.begin();

     

    front() : 첫 번째 데이터 참조 반환

    int& firstVal=vector1.front();

     

    end() : 마지막 다음 위치 반복자 반환

    vector<int>::iterator iterEnd = vector.end();

     

    back() : 마지막 데이터 참조반환

    int& lastVal = vector1.back();

     

    clear() : 저장한 모든 데이터 삭제

    vector1.clear();

     

    empty() : 백터에 데이터가 존재하는지 판단

    bool bEmpty=vector1.empty();

     

    size() : 백터에 저장된 데이터의 개수 반환

    vector<int>::size_type size = vector1.size();

     

    * vector는 다음과 같이 int val = vector1[5];

    배열과 같이 사용할 수 있다!

     

    지정한 위치에 데이터를 삽입할 수 있다.

    vector<int>iterator iterInsertPos=vector1.begin();

    vector1.insert(iterInsertPos,10);

    첫번째 위치에 10을 삽입한다.

     

    vector<int>iterator iterInsertPos=vector1.begin();

    iterInsertPos++;

    vector1.insert(iterInsertPos,3,500);

    두번째 위치에 500을 3번 삽입한다.

    500, 500, 500 이렇게..

     

    지정한 위치에 다른 백터를 이어서 복사하는것.

    vector<int> vector1;

    vector<int> vector2;

    vector1.push_back(10);

    vector1.push_back(20);

    vector2.push_back(1);

    vector2.push_back(2);

    iterInsertPos=vector1.begin();

    vector1.insert(iterInsertPos, vector2.begin(), vector2.end());

    출력결과는

    1,2,10,20 으로 출력..

    이때 중요한 것은..for으로 출력할때 *iterInsertPos로 할 수 있지만..

    for(iterInserPos;iterInsertPos!=iterend;iterInsertpos++)

    여기서 iterend의 값도 필요하다

    즉, vector<int>::iterator iterend=end();

    이게 필요하다는것..그리고

    처음 가르켰던 주소가 나중에 vector2가 삽입되면서 변했으므로

    vector<int>::iterator iter=vector3.begin();
     vector<int>::iterator itere=vector3.end();
     vector3.insert(iter, vector4.begin(), vector4.end()); //변했음.

     iter=vector3.begin();
     itere=vector3.end(); //재위치를 받는중..

    이렇게 재위치를 다시 받아야한다..

    안그럼 엉뚱한곳으로 가르키고..망함...오류!


    ...아 오늘 너무 졸리다.

    '@ 16. 1 ~ 17. 1 > STL' 카테고리의 다른 글

    컨테이너 & 반복자 & 알고리즘 & 함수객체  (0) 2014.04.10
    STL list 주요 특징 정리  (0) 2013.05.27
    STL vector / deque 주요 특징 정리  (0) 2013.05.27
    vector<STL> 사용하기  (0) 2013.03.10
    STL List(1)  (0) 2013.02.11
Designed by Tistory.