자세한 사항들은 아래 링크에서 배우시면 됩니다.

씹어먹는 C++ -

씹어먹는 C++ -

씹어먹는 C++ -

씹어먹는 C++ -

vector

동적 배열이다. vector뒤에 원소를 넣고 빼는 연산에 특화되어 있다. 대괄호에 대해서 Overloading이 되어 있어서 index로 접근이 가능하지만, for 문에 쓸 때와 같이 순회를 할 때는 iterator를 쓰는 것이 권장된다. 2차원 배열과 같이 쓰기 위해 vector의 vector를 쓰는 경우 (>>를 쓸 때) >과 > 사이에 스페이스가 있어야 한다. 그렇지 않으면 비트 연산 (Shfiting) >>으로 해석해서 컴파일 에러가 생길 수도 있다.

#include <cstdio>
#include <vector>

using namespace std;

// int외의 다른 것들도 가능. 
// double,long long, struct 혹은 vector마저도 가능.
vector<int> vt; 

int main(void){
    int sizeOfArr,tmp;

		scanf("%d",&sizeOfArr);

		for(int i=0;i<sizeOfArr;i++){
        scanf("%d",&tmp);

				// vector에 저장(제일 뒤에 저장됨)
        vt.push_back(tmp);
    }

		// iter앞에 *이 붙어있는 점에 주의하자
    for(vector<int>::iterator iter=vt.begin();iter!=vt.end();iter++)//iterator가 end에 도달하면 이미 모든 원소 탐색을 한 것이다.
        printf("%d ",*iter);
  
		return 0;
}

queue

이름에서부터 알 수 있듯이 queue이다. FIFO 연산에 특화되어 있다.

#include <cstdio>
#include <queue>

using namespace std;

queue<int> qu;

int main(void){
    int sizeOfArr,tmp;

    scanf("%d",&sizeOfArr);

    for(int i=0;i<sizeOfArr;i++){
        scanf("%d",&tmp);

				// queue에 저장(제일 뒤에 저장됨)
        qu.push(tmp);
    }

		// 큐가 빌때까지
    while(!qu.empty()){
				// 제일 앞에 있는 원소 출력
        printf("%d ",qu.front());
				// 앞에 있는 원소 제거 pop의 리턴 값이 원소가 아님에 주의
        qu.pop();
    }

    return 0;
}

pair

2개의 원소를 합쳐 하나의 원소로 나타낸다. pair가 강력해지는 부분은 비교 연산이다. 비교 연산을 수행할 시 우선적으로 앞의 원소를 비교하고 그 후에 뒤의 원소를 비교한다.

예를 들어,

pair<int, pair<double, float> >