728x90

표준 템플릿 라이브러리라고 불리는 STL은 자료와 알고리즘을 효율적으로 관리할 수 있도록 C++에서 제공하는 표준 라이브러리다.

컨테이너(container)는 어떤 종류의 객체 컬렉션(collection)을 관리하는데 사용된다.


순차 컨테이너, sequence containers
순차 컨테이너는 모든 요소들을 선형적인 순차열로 저장하는 형태다.
원소들이 규칙에 따라 저장한 순서대로 배열이 된다.
벡터(vector), 데큐(deque), 리스트(list)가 있다.

연관 컨테이너, associative containers
연관 컨테이너는 키(key)와 값(value) 쌍처럼 관련된(연관된) 데이터를 하나의 쌍 형태로 저장한다.
키와 값을 이용하여 요소들에 대한 빠른 접근을 제공한다.
세트(set), 멀티세트(multiset), 맵(map), 멀티맵(multimap) 가 있다.

Vector

ㅇ C++에서 벡터는 배열의 기능을 확장한 것이다.
ㅇ 배열은 동적할당을 하면 그 크기를 바꿀 수 없지만, 벡터는 크기를 자유롭게 변경할 수 있다.
ㅇ Vector의 특성

    - 연속적인 공간에서 원소를 저장/관리

    - 단방향 원소 저장을 위한 container

    - push_back(element) : 벡터 요소를 마지막에 추가

    - pop_back(element) : 벡터의 마지막 요소를 삭제

    - size() : 벡터 내의 요소수를 반환

    - capacity() : 할당된 공간 크기를 리턴
    - at(index) : 지정 인덱스에 있는 요소 반환

    - empty() : 벡터가 비어 있으면 true 반환

    - clear() : 벡터의 모든 요소 삭제

    - container 에 보관된 원소에 접근할 때 반복자(iterator)를 사용한다.

      ▶ begin() : 첫번째 원소를 가리킨다.

      ▶ end() : 마지막 원소를 가리킨다.

      ▶ erase(iterator) : iterator가 가리키는 원소 제거


ㅇ vector의 선언

    - #include <vector> 로 헤더를 포함해야 한다.

    - std::vector<자료형> 이름; // using namespace std;를 사용하시면 std:: 생략이 가능

      vector<int> iv(10) : 0으로 초기화 된 10개의 원소를 가지는 vector iv를 생성

      vector<int> iv(10, 1) : 1로 초기화된 10개의 원소를 가지는 vector iv를 생성


예제1

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    vector<int> iv; // int 타입 벡터 선언 및 비어있는 벡터 생성

    // 벡터 데이터 생성
    for (int i = 0; i < 10; i++) {
        iv.push_back(i+1);
    }

    // for문을 이용한 데이터 출력
    for (int i = 0; i < iv.size(); i++) {
        cout << iv[i] << " ";
    }
    cout << endl;

    cout << "size : " << iv.size() << endl;

    iv.push_back(15); // 벡터 요소 추가
    iv.push_back(16); // 벡터 요소 추가

    // 반복자를 활용한 데이터 출력
    vector<int>::iterator iter;
    for (iter = iv.begin(); iter != iv.end(); iter++) {
        cout << *iter << " ";
    }
    cout << endl;

    cout << "size : " << iv.size() << endl;

    iv.pop_back(); // 벡터 마지막 요소 삭제

    // 반복자를 활용한 데이터 출력
    for (iter = iv.begin(); iter != iv.end(); iter++) {
        cout << *iter << " ";
    }
    cout << endl;

    return 0;
}

실행결과


블로그 이미지

Link2Me

,