(2024-2 자료구조반) 1. STL

권용훈·2025년 1월 16일

gbsw 부트캠프 시리즈

목록 보기
13/32

지난 시간에는 C++의 문법과, 자료구조의 정의, 앞으로 배울 자료구조들을 알아보았습니다.
다음 시간에는 C++을 원활히 쓰기 위한 라이브러리, STL을 알아보겠습니다.




1) C++의 틀

다음과 같습니다.

#include <iostream>
using namespace std;
int main(){

}

여기서 using namespace std;
여러 함수나 단어의 앞에 "std::"를 붙이기 귀찮으니 쓴 것이며,
int main() 함수는 프로그램을 시작할 때 가장 처음으로 실행되는 함수입니다.

그러면, #include <iostream>은 무엇일까요?

바로, 문자열 입출력과 관련된 기능을 제공하는 라이브러리입니다.




2) STL의 뜻

Standard Template Library(표준 템플릿 라이브러리)의 약자로,
C++을 쉽게 사용하기 위해 표준으로 만들어진 기능들을 뜻합니다.




3) STL의 종류

STL은 크게 다음 세 가지 요소로 이루어져 있습니다.

(1) 컨테이너

데이터를 저장하는 객체들입니다.
대표적으로 <vector>, <map>, <stack>등이 있습니다.

배열을 마개조한 것이라고 생각하면 편합니다.

(2) 반복자

컨테이너의 데이터 위치를 쉽게 알 수 있는 도구입니다.
하다보면, 자연스럽게 많이 사용하게 됩니다.

(3) 알고리즘

컨테이너를 포함한 데이터들을 이용하여
많이 쓰이는 알고리즘들을 쉽게 사용할 수 있는 함수입니다.
대표적으로 sort, lower_bound, binary_search 등이 있습니다.



STL은 딱히 특별한 문법이나 지식을 요구하는 것은 아닙니다.
단지, C++ 문법의 일부라고 보시면 됩니다.




4) <vector>

앞서 말했듯, STL의 컨테이너는 "배열을 마개조한 것" 이라고 하였습니다.

vector는 대표적인 STL의 컨테이너입니다.

일반적인 배열과 다른 점은, 크기가 동적으로 변한다는 것입니다.

vector의 간단한 사용 예시입니다.

#include <iostream>
#include <vector> // 반드시 적어야 합니다.
using namespace std;
int main() {

	vector<int> v; // int형 동적 배열 선언

	vector<float> f(5); // 길이가 5인 float형 배열 선언

	vector<string> s{ "I'm", "so", "sexy" }; // string형 동적 배열 선언 후, 3개의 값을 넣음

	vector<vector<long long>> l; // 2차원 동적 배열 선언

	v.push_back(5); // v의 오른쪽에 5 추가

	v.insert(v.begin(), 100); // v의 시작점에 100 추가

	v.clear(); // v의 모든 데이터를 삭제한 후, 길이를 0으로 설정

	v.resize(5); // v의 길이를 5로 설정

	for (int i = 0; i < v.size(); i++) // 배열의 처음 값부터 끝 값까지 반복
		cout << v[i] << ' ';

}

이것 말고도 여러가지 함수와 기능들이 많지만,
앞으로 배울 자료구조들을 구현하는것은 충분할 것입니다.




이번 시간에는 STL의 뜻과, 대표적인 컨테이너인 <vector>를 알아보았습니다.
다음 시간에는 데이터를 접시처럼 쌓듯이 보관하는, 스택을 알아보겠습니다.

profile
PS악귀.

0개의 댓글