Notice
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- webhacking
- php
- 인공지능
- 자바스크립트
- 보안
- 알고리즘
- writeup
- C언어
- 리버싱 문제
- 백준 알고리즘
- 컴퓨터 구조
- 머신러닝
- 리버싱 워게임
- 웹해킹
- 웹
- webhacking.kr
- 리버싱
- html
- 워게임
- sql injection
- 회귀 수식
- MySQL
- 넘파이
- CodeEngn
- 리눅스
- 리액트
- abex crackme
- 백준
- 해킹
- 어셈블리어
Archives
- Today
- Total
인공지능 개발일지
[C++] 벡터, 스택, 큐 사용법과 차이 본문
728x90
C++에서 벡터, 스택, 큐는 C++의 모두 STL Library에 들어있으며 각각 <vector>,<stack>,<queue> 헤더파일을 include해서 사용할 수 있다.
스택과 큐는 벡터를 응용한 개념이고
스택과 큐 둘 다 push()는 원소 추가, pop()은 원소 제거
stack pop(): 제일 뒤의 원소 제거
queue pop(): 제일 앞의 원소 제거
스택은 먼저 들어간게 먼저 나옴 (FIFO, First In First Out)
스택은 top()으로 가장 위에 있는 원소를 출력할 수 있고
큐는 먼저 들어간게 나중에 나오고 (LIFO, Last In First Out)
큐는 front()로 제일 아래에 있는 원소를 출력하고, back()으로 가장 위에(나중에 들어간) 원소를 출력함
대괄호([])를 통해 원소의 접근이 불가능하고
front()가 맨 앞의 원소, back()이 맨 뒤의 원소
원소를 추가하거나 제거하는 작업 (insert(), erase()는 시간 복잡도가 O(n)이다.
스택과 큐는 []로 원소 접근이 불가능하고 top()으로 제일 마지막에 있는 원소를 접근할 수 있다.
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <stack>
using namespace std;
int main() {
/*vector<int> v;
vector<string> nameList;
// 벡터 인덱싱은 배열과 마찬가지로 대괄호 [] 사용
v.push_back(1);
v.push_back(3);
v.push_back(5);
v.push_back(7);
v.push_back(9);
nameList.push_back("jiseon");
nameList.push_back("Dabin");
nameList.push_back("Hyeri");
nameList.push_back("jimin");
// ====================================================================
// 벡터를 출력하는 두 가지 방법 (벡터의 원소 출력은 모두 Iterator를 사용해야함.)dcdc
// 1) iterator로 벡터 사용
// 2) iterator로 숫자(int)사용
// ====================================================================
// iterator로 벡터 사용은 담는 자료형도 따로 선언한 벡터여야함.
vector<string>::iterator iter;
cout << "[iterator 벡터로 출력]" << "\n";
for (iter = nameList.begin(); iter < nameList.end(); iter++) {
cout << *iter << ' '; // 출력시에도 대괄호가 아닌 *(iterator 형식)
}
cout << "\n[iterator 숫자로 출력]" << "\n";
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';
}*/
stack<char> s;
s.push('h');
s.push('e');
s.push('l');
s.push('l');
s.push('o');
cout << "I am stack" << '\n';
for (int i = 0; i < 5; i++) {
cout << s.top() << ' ';
s.pop();
}
queue<char> n;
n.push('j');
n.push('i');
n.push('s');
n.push('e');
n.push('o');
n.push('n');
cout << "\nI am queue " << '\n';
for (int i = 0; i < 6; i++) {
cout << n.front() << ' ';
n.pop();
}
return 0;
}
728x90
'개발 지식 > C,C++' 카테고리의 다른 글
[C언어] 포인터 사용 법 (0) | 2021.06.18 |
---|---|
[C언어] 구조체 (0) | 2021.06.15 |
[C언어] 배열의 A-Z까지, (0) | 2021.06.13 |
[C언어] 헤더파일과 전처리기 (2) | 2021.06.10 |
[C언어] 파일 입출력 (0) | 2021.06.02 |