ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • vector 컨테이너
    c++ 2018. 11. 22. 00:53

    header파일

    #include<vector> 필요


    알고리즘 함수사용

    #include<algorithm> 헤더 필요


    Vector 객체 생성

    ex) vector<int> v; // int 타입의 값만 다루는 벡터 객체 생성


    // v는 오직 int 타입만 다루므로 다른 타입의 값을 삽입하면 오류가 발생한다.


    vector에 원소 삽입

    -> vector에 값을 삽입하기 위해서는 push_back() 멤버 함수를 이용한다.

    push_back()은 삽입되는 값을 벡터의 맨 마지막에 삽입한다.


    ex)  v.push_back(1);

    v.push_back(2);

    v.push_back(3); // 저장된 원소의 개수는 3이 된다.


    vector의 원소 값 읽기 및 변경


    at() 멤버 함수를 이용하면 벡터의 원소에 접근할 수 있다.


    v.at(2) = 5; // v의 3번째 원소 값을 5로 변경

    int n = v.at(1) // v의 두 번째 원소 값을 읽어 n에 저장


    벡터를 배열처럼

    ex)  v[2] = 5; // 벡터 v의 3번째 원소 값을 5로 변경

    int n = v[1]; //벡터 v의 두번째 원소 값을 읽어 n에 저장


    []연산자를 이용하여 다음과 같이 벡터의 모든 원소를 출력할 수 있다.

    ex) for(int i=0; i<3; i++)

    cout << v[i] << '\n';


    벡터의 원소 개수 알아내기

    벡터의 존재하는 원소의 개수는 size() 함수를 이용하여 알아낼 수 있다. size()를 이용하면 앞의 for 문을 다음과 같이 변경할수있다.


    for(int i=0; i<v.size(); i++)

    cout << v[i] << '\n';


    벡터의 원소 삭제

    벡터에 들어 있는 원소를 개별적으로 삭제하는 멤버 함수로 erase()가 있지만 erase()는 iterator와 함께 사용해야 한다.

    vector<int>::iterator it; // it는 정수 벡터의 원소를 가리키는 포인터

    it = v.begin(); //it는 벡터 v의 첫 번째 원소를 가리킨다.

    it = v.erase(it); //벡터 v에서 첫번째 원소를 삭제한다.


    erase(it)는 it가 가리키는 원소를 삭제한 후 , 벡터의 원소들을 다시 앞으로 한자리 씩 이동시킨다. 그리고 삭제된 다음 원소를 가리키는 포인터를 리턴한다. 그러므로 erase(it) 후에는 다음과 같이 반드시 it가 리턴 값으로 치환되어야 한다.

    it = v.erase(it); // 삭제 후 erase()의 리턴 값으로 it 재설정


    p.488.

    STL vector의 멤버 함수와 연산자 함수


    push_back(element)  : 벡터의 마지막에 element 추가

    at(int index) : index 위치의 원소에 대한 참조 리턴

    begin() : 벡터의 첫 번째 원소에 대한 참조 리턴

    end() : 벡터의 끝(마지막 원소 다음)을 가리키는 참조 리턴

    empty() : 벡터가 비어 있으면 true 리턴

    erase(iterator it) : 벡터에서 it가 가리키는 원소 삭제. 삭제 후 자동으로 벡터 조절

    insert(iterator it, element)  : 벡터 내 it 위치에 element 삽입

    size() : 벡터에 들어있는 원소의 개수 리턴

    operator[]() : 지정된 원소에 대한 참조 리턴

    operator=() : 이 벡터를 다른 벡터에 치환(복사)




    'c++' 카테고리의 다른 글

    한 줄을 읽고자 할 때 get()과 getline() 중 어떤 것이 좋은가?  (0) 2018.11.22
    std::sort()  (0) 2018.11.22
    문자열 다루기  (0) 2018.11.19
    cin 과 >>의 허점과 해결방법  (0) 2018.11.07
    cin과 >>로 키 입력받기  (0) 2018.11.02
Designed by Tistory.