Computer Security

#13 C++ STL 시퀀스 컨테이너 라이브러리 본문

프로그래밍/C++

#13 C++ STL 시퀀스 컨테이너 라이브러리

쿠리 Kuri 2022. 6. 24. 18:30

C++ STL 시퀀스 컨테이너


1) STL 시퀀스 컨테이너 라이브러리는 매우 활용도가 높은 자료구조를 제공한다.
2) 기존의 C언어를 이용하면 구현하기 까다로웠던 다양한 자료구조를 손쉽게 이용할 수 있다.
3) 가장 많이 사용되는 시퀀스 컨테이너는 벡터(Vector)와 덱(Deque)이다.
- Vector(벡터)
- Deque(덱)
- List(리스트)
- Forward List(순방향 리스트)


C++ STL 시퀀스 컨테이너: 덱
덱(Deque)는 양 끝에서 데이터를 넣거나 뺄 수 있는 자료 구조(Data Structure)다.
- PUSH_FRONT: 덱의 앞에 데이터를 삽입한다.
- POP_FRONT: 덱의 앞에서 데이터를 꺼낸다. 
- PUSH_BACK: 덱의 뒤에 데이터를 삽입한다.
- POP_BACK: 덱의 뒤에서 데이터를 꺼낸다.
- INSERT: 덱의 특정 위치에 데이터를 삽입한다.

insert(넣을 위치,횟수,넣을 숫자)

ex) insert(1, 3 ,5) -> 1위치에 5를 3번 넣는다.

 

코드 예시

#include <iostream>
#include <deque>
//덱 라이브러리를 불러온다.
using namespace std;

int main(void) {

deque<int> d;
d.push_front(3); d.push_back(7); d.pop_front(); d.push_front(4);
//앞에 3 넣고 뒤에 7넣고 앞에 3빼고 앞에 4 넣는다.
// 4 7  
for (int i = 0; i < d.size(); i++) {
    cout << d[i] << ' '; } 
//4 7 출력
cout << '\n';
//줄 바꿈
deque<int>::iterator iter; //위치를 간섭할 수 있다.
iter = d.begin(); //제일 처음 위치함수 begin사용
d.insert(iter + 1, 3, 5); //첫 위치인 4에서 +1 한 7자리에 5를 3번 대입한다.
// 4 5 5 5 7 
iter = d.begin(); //첫 자리 4
d.insert(iter + 1, 1, 9); //첫 자리 4에서 +1을 한 5자리에 9를 1번 대입한다.
//4 9 5 5 5 7
for (int i = 0; i < d.size(); i++) {
	cout << d[i] << ' '; }
cout << '\n'; //출력 후 줄 바꿈
d.clear();
cout << d.empty() << '\n';
//덱이 초기화 되었는지 확인. 초기화 됐으면 1출력
system("pause");
}

결과 값


C++ STL 시퀀스 컨테이너: 벡터
벡터(Vector)는 뒤쪽에서만 데이터를 넣거나 뺄 수 있는 자료 구조(Data Structure)다.

배열처럼 사용하기에 적합하다는 점에서 알고리즘 문제풀이에서 가장 많이 사용된다.
실제로 문제풀이에서는 앞뒤로 원소가 추가되는 경우가 적으며 임의 원소에 접근해야 하는 경우가 많아 덱 자료구조와 비교했을 때 일반적인 경우 성능적으로 더 효율적이다.
- PUSH_BACK: 벡터의 뒤에 데이터를 삽입한다.
- POP_BACK: 벡터의 뒤에서 데이터를 꺼낸다.
- INSERT: 벡터의 특정 위치에 데이터를 삽입한다.

 

 

코드 예시

#include <iostream>
#include <vector>
//벡터 라이브러리를 불러온다.
using namespace std;

int main(void) {
	vector<int> v; //인트형 벡터라이브러리를 v라 한다.
	v.push_back(3); v.push_back(5); v.push_back(8);
	//뒤에 3 대입 뒤에 5 대입 뒤에 8대입
	// 3 5 8
	vector<int>::iterator iter; //똑같이 위치간섭
	iter = v.begin(); //제일 처음 3위치
	v.insert(iter + 1, 3, 7); //3에서 +1 한 5위치에 7을 3번 대입
	//3 7 7 7 5 8
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << ' ';
	} //출력
	cout << '\n';
	//줄 바꿈
	v.clear(); //벡터 안에있는거 없애기
	cout << v.empty() << '\n' ;
	//초기화 되었는지 확인. 아무것도 없으니 1출력
	system("pause");
}

결과 값

 

'프로그래밍 > C++' 카테고리의 다른 글

#15 C++ 예외 처리  (0) 2022.06.26
#14 C++ STL 연관 컨테이너 라이브러리  (0) 2022.06.25
#12 C++ STL 컨테이너 어댑터 라이브러리  (0) 2022.06.23
#11 C++ 스마트 포인터  (0) 2022.06.22
#10 C++ 템플릿  (0) 2022.06.21
Comments