C++ | 기본 이해

heige·2023년 12월 25일
0

CPP

목록 보기
1/12
post-thumbnail

C++ 기본 이해

예제로 보기

#include <bits/stdc++.h> // --- (1)
using namespace std;// --- (2) string a;// --- (3)
int main() {
cin >> a;// --- (4)
cout << a << "\n";// --- (5) 
return 0; // - (6)
}
  1. 헤더파일을 include 시킨다. bits/stdc++.h는 C++의 모든 표준 라이브러리가 포함된 헤더파일이다.
  1. std라는 네임스페이스(namespace)를 사용한다. 네임스페이스란 많은 라이브러리를 불러서 사용하다보면 변수명 중복이 발생할 수 있는데 이를 방지하기 위해서 변수명에 범위를 걸어놓는 것을 의미한다. cin이나 cout 등을 사용할 때 원래는 std라는 네임스페이스를 통해 std::cin 이렇게 호출을 해야 하는데 std를 기본으로 설정해서 cin, cout으로 호출할 수 있게 한다.
  1. 문자열변수 a를 선언. <타입> <변수명> 이렇게 선언한다.. string이라는 타입을 가진 a라는 변수이다.
  1. 변수 a를 입력받는다. 대표적으로 입력함수로는 cin, scanf가 있다.
  1. 변수 a를 출력한다. 대표적으로 출력함수는 cout과 printf가 있다.
  1. main함수를 종료시키는 return 0이다. 프로세스를 정상적으로 마무리한다는 의미이다.(process exit call success)

typedef

typedef를 통해 타입의 이름을 새롭게 별칭으로 정의하고 실제 타입이름 대신 별칭으로 사용할 수 있다. 이를 통해 C++에서 이미 정의된 타입 또는 사용자가 정의한 타입(struct 또는 class)보다 더 짧거나 의미있는 이름을 지을 수 있다.

typedef <타입> <별칭>
#include<bits/stdc++.h>
using namespace std; typedef int i;
int main(){
i a = 1;
cout << a << '\n'; return 0;
}

define

define을 통해 상수, 매크로를 정의할 수 있다.

#define <이름> <값>
#include<bits/stdc++.h>
using namespace std;

#define PI 3.14159
#define loop(x,n) for(int x = 0; x < n; x++)

int main(){
	cout << PI << '\n'; 
	int sum = 0; 
	loop(i, 10){
		sum += i;
	}
	cout << sum << '\n'; 
    return 0;
}

STL

C++은 STL(Standard Template Library)을 제공하며 이는 자료구조, 함수 등을 제공하는 라이브러리를 뜻한다. 알고리즘, 컨테이너, 이터레이터, 펑터 이렇게 4가지를 제공한다. 우리가 C++로 vector라는 자료구조를 쓴다던가 sort()함수를 쓸 수 있는 것은 다 STL 덕분!!

알고리즘

정렬, 탐색 등에 관한 함수로 이루어져 있고, sort()가 대표적이다.

컨테이너

컨테이너는 여러가지 의미로 쓰인다. 클라우드 서비스의 컨테이너도 있고 물건을 많이 담을 수 있는 컨테이너 박스라는 의미도 있다. 여기서의 컨테이너는 C++에서 제공하는 자료구조를 의미한다.

  • 시퀀스 컨테이너 : 데이터를 단순히 저장해 놓는 자료구조를
    뜻하며 array, vector, deque, forward_list, list 가 있다.
  • 연관 컨테이너 : 자료가 저장됨에 따라 자동정렬되는
    자료구조를 말한다. 중복키가 가능한 것은 이름에 multi가 붙는다. set, map, multiset, multimap이 있다.
  • 정렬되지 않은 연관 컨테이너 : 자료가 저장됨에
    따라 자동정렬이 되지 않는 자료구조를 말한다. unordered_set, unordered_map, unordered_multiset, unordered_multimap이 있다.
  • 컨테이너 어댑터 : 시퀀스 컨테이너를 이용해 만든 자료구조를 뜻한다. stack, queue는 deque로 만들어져 있으며 priority_queue는 vector을 이용해 힙 자료구조로 만든다.

이터레이터

(추후 배울 내용)

펑터

함수 호출 연산자를 오버로드하는 클래스의 인스턴스를 말한다.

profile
웹 백엔드와 클라우드 정복을 위해 탄탄한 기반을 쌓아가고 있는 예비개발자입니다. 'IT You Up'은 'Eat You Up'이라는 표현에서 비롯되어, IT 지식을 끝까지 먹어치운다는 담고 있습니다.

0개의 댓글