C++ 기초

Hanbi·2021년 12월 24일
0
post-thumbnail

배열 초기화

fill_n(arr, 크기, 초기화 값);

구조체

pair 쓰는 자리에 똑같이 쓰면 됨 !

struct student {
	int a;
	int b;
	int c;
	string name;
};

vector<student> v(N);
//v[i].a
//v[i].b
//v[i].c
//v[i].name

형 변환

  • string ➡️ int
int n = stoi(str);
  • int ➡️ string
string str = to_string(num);
  • char '5' ➡️ int 5
int n = c - '0';
  • int 5 ➡️ char '5'
char c = n + '0';

지역변수 vs 전역변수

지역변수전역변수
쓰레기값으로 초기화0으로 초기화
stack 영역에 할당data 영역에 할당
메모리 크기 제한 있음메모리 크기 비교적 자유로움

※ OS는 성능 상의 이유로 stack 영역에 메모리 제한을 걺

int vs long long

⚠️범위 10억(1,000,000,000) 넘어가면 long long형으로 선언하기

삼항연산자

조건 ? a : b

  • 조건이 참이면 a
  • 거짓이면 b
(a < b) ? a : b;

2의 거듭제곱

비트 시프트 연산으로 간단하게 가능

int a = 10
int b = a << 1; // 20
int b = a >> 1; // 5
int b = a << c; // 10의 c제곱

자료형

⚠️음수 나오거나 이상한 값 나오면 자료형 때문에 에러나는 경우가 대부분

  • 정수

    • int : %d
    • long : %ld
    • long long : %lld
  • 실수

    • float : %f
    • double : %lf
  • 8진수

    • %o
  • 16진수

    • 소문자 %x
    • 대문자 %X

문자열 이어붙이기

+ 기호로 가능

공백 포함 문자열 입력 받기

cin과 getline 함께 사용할 경우, 입력버퍼 비워줘야 함

ex)

3
abc 123 xxx

  • cin은 '\n'를 처리하지 않고 입력버퍼에 남겨둔다.
  • geline은 '\n'를 입력버퍼에서 가져와서 처리한다.
  • str에 "abc 123 xxx"가 아니라, '\n'가 전달되며 '\n'를 제거 후 str에 ''을 담기 때문에 n과 ''이 출력되고 프로그램이 종료됨
cin >> n;

cin.ignore();

getline(cin, str);

정수 한 자리씩 입력 받기

1234125 이런 식으로 띄어쓰기 없이 입력 받으면 cin이 어려움

scanf(“%1d”,&num);

시간초과 해결방법⌛

  • endl 대신 '\n'
  • main에 아래 코드 추가
    ✨C 입출력 사용하지 않을 때만!!!
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);

입출력

c 입출력 그대로 사용
(c++의 입출력으로 개행에 endl을 사용하면 출력 버퍼를 비우는 시간이 소요되기 때문)

#include <stdio.h>

⭐문자열

#include <iostream>

cin >> a[i]; // 입력
cout << a[i]; // 출력
cout << a[i] << endl; // 개행
cout << a[i] << ' '; // 띄어쓰기

범위 기반 for문

시작과 끝점을 알려주지 않아도 알아서 처음부터 끝까지 순회를 해주는 반복문
※ 인덱스 정보 없음
※ 배열 요소 변경 불가능

for(int n : num_array) {
       
    }

break문 vs continue문

breakcontinue
반복문 탈출반복문 끝으로 이동해 다음 반복으로 넘어감
특정 조건 만족 시, 반복문 벗어날 때 사용전체 반복 중 특정 조건을 만족하는 경우 제외할 때 사용
profile
👩🏻‍💻

0개의 댓글