WIL (Weekly I Learned)
이번주에 배운 것
- 컴퓨터의 작동 원리
- CPU, 주기억장치, 보조기억장치, 그래픽 카드
- CPU가 운영체제를 실행시키고 싶을 때 일 하는 방식
- 보조기억장치에 있는 운영체제 프로그램을 주기억장치로 복사시킨 후 일을 함
- 운영체제의 핵심
- 하드웨어와 응용 프로그램 중개, 리소스 관리 등
- C++ 출력, 입력, 참조, 문자열, 생성자/소멸자, std::array
- 출력: 출력형식 지정할 때 조정자를 쓰기도 한다
- 입력
- scanf가 왜 위험하지? 경계검사를 하지 않아서!
- 입력 버리기 : clear, ignore 각각 언제써?
- clear: 스트림이 좋지 않은 상태가 되었을 때다시 스트림을 아무 문제 없는 상태로 만들 때(문제 있는 bit가 설정되었을 때 그걸 그냥 지워줄 때)
- ignore: 파일 끝에 도달하거나 지정한 수 만큼 문자를 버릴 때
- 입력 버리기: get(), getline() 차이?
- 둘다 한줄 읽어오는데 입력스트림을 남기냐(get), 버리냐(getline)차이
- 참조
- 왜 써?
- C++에서 포인터 연산이 없어도 될 때, 주소 변경이 없어도 될 때 안전하게 쓰기 위해 참조 씀
- 참조가 포인터보다 안전함
- 포인터는 NULL 넣을 수 있는데 참조는 NULL 못 넣어서 값이 일단 유효함
- 참조는 우리가 소유하지 않은 메모리 장소를 가리킬 수 없음
- 값에 의한 호출, 참조에 의한 호출, 포인터
- 참조란 별칭이다.
- NULL이 될 수 없고 초기화중에 반드시 선언되어야 함
- 왜 써?
- 문자열
- std::string 클래스
-
char line[256]; cin.getline(line,256);
- 위 코드를 보면 두가지 문제가 있는데 1. 아무것도 읽지 못했을 때, 2. 한 줄에 문자가 256자 이상일 때(버퍼가 충분히 크지 않을 때)
- 대안: std::string 클래스를 이용한 문자열은 길이가 증가할 수 있음. 배열 길이에 관해 고민할 필요가 없음
- 대입 / 덧붙이기
- 문자열 합치기
- 비교 연산자 : A<B, AB<AC (사전상의 순서를 비교)
- size(), length(), c_str()
- string 속의 한 문자에 접근하기
-
- std::string 클래스
- 생성자/소멸자
- 왜 써?
- Memory Leak 최소화 하기 위해. 성능적으로 놓치는 것 없게 하기 위해
- RAII : Resource Acquisition Is Initialization
- 객체가 생성(생성자)/소멸(소멸자)될 때 자동으로 실행됨
- 초기화 리스트
- 생성자에서 필드를 간단하게 초기화하는 방법
- 왜 써?
- 생성과 동시에 초기화되어야 하는 변수들(const 선언 변수, 레퍼런스 변수) 때문에
- 왜 써?
- C스타일 배열, std::array
- 배열: 같은 종류의 데이터가 연속적으로 저장되어 있는 자료 구조
- 배열 특징
- 인덱스 사용하여 원하는 원소에 곧바로 접근 가능
- 캐시 지역성
- 크기 분별
- 스택 메모리 영역에 할당 : 너무 큰 크기 배열 선언하면 스택 오버플로 에러
- std::array : C++에서 C 스타일 배열을 대체하는 고정 크기 컨테이너 (C++11)
- std::array 특징
- 배열의 크기를 정확하게 알 수 있음. array::size()
- 단점
- 항상 스택 메모리를 사용(대용량 저장 용도 사용 불가)
- 배열 크기 명시적으로 지정해야 함
- std::array보다 std::vector가 많이 사용됨
- std::array 특징
차주에 진행할 것
- 컴퓨터 작동 원리 끝내기
- C++ ~5주차까지 : 개체지향 프로그래밍 + 정적(static) 멤버 함수/변수 까지
- C ~5주차까지 : ~커맨드 라인 인자(command line argument)까지
- 알고리즘: ~재귀 까지
- Effective C++: ~Chapter 4
- VR Project 애니메이션 적용
앞으로 진행할 것
- 프로그래밍 면접 이렇게 준비한다
'TIL' 카테고리의 다른 글
WIL (22.02.06) (0) | 2022.02.06 |
---|---|
WIL (22.1.30) (0) | 2022.01.31 |
코딩테스트를 마치고 (0) | 2021.09.12 |
[ML-Agent를 활용한 머신러닝] MummyRay (0) | 2021.08.17 |
[ML-Agent를 활용한 머신러닝] Soccer (0) | 2021.08.17 |
댓글