STL - Sequence Container; 순차 컨테이너 in C++

sunghoon·2025년 3월 24일
0

2.0 Glove Project

목록 보기
29/35

🧇 Vector

일반화된 컨테이너 중에서 가장 많이 사용된다.

필요한 크기만큼 메모리를 자동으로 재할당하여 늘릴 수 있다.

템플릿 기반으로 요소 타입에 무관하게 만들 수 있다.

C언어의 realloc()을 통해 재할당되는 구조

사용형태

// 벡터 형식(Class)으로 타입이 T형인 객체를 선언한 형태
vector<T> vec1;
// 타입이 int형인 벡터를 생성
vector<int> vec1;
#include <iostream>
#include <vector>

using namespace std;

void main()
{
    // 벡터의 크기를 미리 지정할 수도 있다.
    vector<int> vec1(5);
    // 크기를 5로 지정하였지만, 동적 메모리이므로 필요한 만큼 메모리를 늘릴 수 있다.

}

Push_back

queue 구조의 enqueue

뒤쪽에 공간을 미리 만들고 데이터를 추가

뒤쪽에 추가하기 때문에 접근 속도 일정하고 빠름

앞쪽에 추가한다면..

군대 행군에서 산을 넘어감 앞사람 속도 맞춰야 함
교통 정체와 유사

🧇 deque

정의

양쪽 끝에서 데이터를 사업 및

사용형태

deque<T> dq
#include <iostream>
#include <deque>

using namespace std;

int main()
{
    // int num = 0;
    // cin >> num;
    deque<int> dq;
    
    {
    for(int i = 0; i < 5; i++) 
        dq.push_back((i + 1) * 10);
    }
    for(int i = 0; i < 5; i++) 
    {
        cout << dq[i] << endl;
    }

    return 0;
}

deque 함수

  • .size(): 크기 출력

🧇 list

정의

리스트는 배열 처럼 사용되지만 내부구조는 완전히 다른 형태

리스트는 이중 연결 리스트로 구현되어 있는 컨테이너이다.

연결 리스트는 노드라는 것이 붙어 있어서 데이터가 물리적으로 인접해있지 않고, 논리적인 순서를 기억하므로 데이터 삽입, 삭제의 속도가 상대적으로 빠르다.

사용 형태

리스트는 인덱스로 연결되어 있지 않기 때문에 iterator(반복자)를 사용해야한다.

list<int>::iterator it;

begin(): 리스트 첫번째 위치의 포인터 값을 넘겨준다.

end()가장 끝 요소의 다음 번째 메모리 위치

list<int>::iterator it;

for(it = lst.begin(); it != lst.end(); it++) {
  cout << *it << endl;
}

JS → for each()와 유사한 개념

profile
프라다 신은 빈지노와 쿠페를 타는 꿈을 꿨다.

0개의 댓글