자세한 사항들은 아래 링크에서 배우시면 됩니다.
동적 배열이다. 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이다. 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;
}
2개의 원소를 합쳐 하나의 원소로 나타낸다. pair가 강력해지는 부분은 비교 연산이다. 비교 연산을 수행할 시 우선적으로 앞의 원소를 비교하고 그 후에 뒤의 원소를 비교한다.
예를 들어,
pair<int, pair<double, float> >