C++
- 코딩테스트 공부를 위해서 Java가 아닌 C++를 공부하기로 했다. C++은 어려운 언어지만, 알고리즘(코딩테스트)를 위한 C++은 어렵지 않다고 하는 이야기를 믿어보기로 했다..
- 이 글은 인프런의 큰돌님의 코딩테스트 강의인 10주완성 C++ 코딩테스트 바탕으로 C++에 대한 기본적인 이해와 예제 코드들을 작성 할 예정이다.
- 혹시나 이 글이 문제가 될 시 삭제하겠습니다.
1.2 기본
include
- C++의 모든 라이브러리를 이용하기 위해서는 상단에 헤더 파일을 include 시켜줘야 한다.
1
#include <bits/stdc++.h>
- 위에서 나타내는 <bits/stdc++.h>이 C++의 모든 표준 라이브러리를 포함한 헤더 파일이다.
namespace
- include가 잘 되었다면 namespace를 지정하여 코드를 호출할 때 더 간편하게 호출할 수 있다.
1
using namespace std;
- 라이브러리의 변수명 중복을 방지하기 위해 namespace를 std로 범위 제한을 걸어 준다.
#### typedef
- C++에서는 타입의 별칭을 지정하여 사용할 수 있다.
- 사용 방법: typedef
1
typedef int i;
- 위와 같이 작성해두면 ‘int’ 대신 ‘i’로 int형 변수를 선언할 수 있다.
define
- define으로 상수, 매크로를 정의할 수 있다.
1
2
#define PI 3.14
#define loop(i, n) for(int i=0; i<n; i++)
- 이런 식으로 상수나 반복문 등을 미리 정의해놓고 사용할 수 있다.
STL
- Standard Template Library
- 자료구조, 함수 등을 제공하는 라이브러리로 알고리즘, 컨테이너, 이터레이터, 펑터를 제공
알고리즘
- 정렬, 탐색 등에 관한 함수로 이루어져 있다.
컨테이너
- 시퀀스 컨테이너
- 연관 컨테이너
- 정렬되지 않은 연관 컨테이너
- 컨테이너 어댑터
이터레이터
펑터
- 함수 호출 연산자를 오버로드하는 클래스의 인스턴스
1.3 입력과 출력
- C++의 입력에는 cin, scanf, getline 출력에는 cout, printf가 있는데 보통은 cin, cout를 이용한다.
- 그 이유로는 scanf와 printf는 형식을 지정해야 하는 번거로움이 있기 때문
cin, cout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;
string a, b;
int main() {
cin >> a >> b;
cout << a << "\n";
cout << b << "\n";
return 0;
}
/*
입력
재미있는 코딩
출력
재미있는
코딩
*/
- cin의 경우 개행문자까지 입력 받기 때문에 “재미있는 코딩”을 입력했을 때 a에는 “재미있는 “ 까지만 들어가게 되기 때문에 개행문자 다음에 올 문자를 b에 담아주면 된다.
scanf, printf
- scanf의 경우는 형식을 지정해서 입력을 받을 수 있고 printf의 경우는 형식을 지정해야 출력할 수 있다.
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
#include <bits/stdc++.h>
using namespace std;
int a;
double b;
char c;
int main() {
scanf("%d %lf %c", &a, &b, &c);
printf("%d\n", a);
printf("%lf\n", b);
printf("%c\n", c);
return 0;
}
/*
입력
1
2.313
a
출력
1
2.313
a
*/
주의! printf로 string 타입을 출력할 때 문자열.c_str() 명령어를 이용하여 문자열에 대한 포인터(char *) 타입으로 바꾸어 주어야 한다.
scanf, printf용 타입과 형식
형식 | 타입 |
---|---|
d | int |
c | char |
s | string |
lf | double |
ld | long long |