일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 커널
- 알고리즘
- pwncollege
- pwn.college
- 시스템 프로그래밍
- 시그널
- C언어
- wargame
- 시스템해킹
- write up
- C++
- 포너블
- 프로그래밍
- 리눅스 커널
- 시스템
- 하드링크
- 컴퓨터구조
- Pwnable.kr
- multiplexing
- css
- 리버싱
- kernel
- 시스템프로그래밍
- Bandit
- 워게임
- 어셈블리어
- 리눅스
- 리눅스커널
- radare2
- Leviathan
- Today
- Total
Computer Security
#13 C++ STL 시퀀스 컨테이너 라이브러리 본문
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 |