-
데브코스 자율주행_TIL_23.09.20데브코스 자율주행 Perception/_TIL(Today I Learned) 2023. 9. 20. 23:47
오늘 배운 내용
1. C++
- 스코프
- lambda
2. STL
- 컨테이너 어댑터
- 비트셋 컨테이너
3. Linux
- 명령어
1. C++
스코프
스코프(scope)는 변수 또는 함수 등의 이름이 통용되는 범위를 이야기한다.
중괄호 블럭 없이 정의되거나 선언된 이름은 전역 스코프를 갖는다.
런타임에 제어흐름이 그 블럭을 벗어나는 순간 변수가 소멸되며 클래스는 소멸자가 자동으로 호출된다.
static으로 선언된 sCounter는 전역 변수이며 동시에 블럭 스코프를 갖는다.
static으로 선언된 method는 static 멤버 변수로 접근이 가능하다.
클래스 멤버 정의 중 static 키워드가 사용된다면, 클래스 변수를 만든다는 의미.
클래스 변수는 전역 변수이지만, 클래스 스코프를 갖는 변수이다.
무명 namespace
namespace는 스코프의 경계를 만드는 도구이다.
심볼 중복을 방지하기 위해 namespace를 달리하여 구분된다.
lambda
람다(lambda)는 익명의 함수를 정의하는 표현식을 의미한다.
람다는 캡처(capture), 인자(parameter), 반환형(return type), 몸통(body)로 구성
//case 1 auto f = [captures](parameters) -> return type { body /* captures: 캡처들이 들어감 parameters: 함수의 인자들이 들어감 return type: 함수의 반환형 body: 함수의 몸통 */ } //case 2 #include <functional> function<void(int)> g = [](int param) { //function 템플릿을 사용하여 형식 지정이 가능하다. };
1번 구조가 효과적이다.
capture문은 함수 몸체에서 외부 변수에 접근하기 위해 사용
capture할 이름 앞에 '&'를 붙이면 참조로 capture하고, 그렇지 않으면 값으로 capture
apture는 댕글링 포인트 버그를 발생할 가능성이 있으므로 유의하자.
기본 캡쳐 모드와 초기화 캡쳐 부분을 조금 더 학습하여 내용을 갱신할 수 있도록 하자.
2. STL
컨테이너 어댑터
컨테이너 어댑터는 순차 컨테이너를 바탕으로 인터페이스를 다르게 래핑한 것을 말한다.
컨테이너 어댑터의 목적은 보다 단순화된 인터페이스를 제공하는 것이다.
기본적으로 다음 세 가지가 있다.
- queue
- priority_queue
- stack
비트셋 컨테이너
비트셋 컨테이너는 특수한 컨테이너로 비트별로 on/off 상태를 저장 및 관리한다.
bool이 1byte를 차지하는 것과 달리 비트셋에서 각 비트는 1bit크기만 차지한다.
#include <bitset>
으로 사용할 수 있다.
비트셋 컨테이너와 비트 연산자를 잘 활용하면 좋은 코드를 만들 수 있다고 생각한다.
비트 연산자에 대한 공부를 하도록 하자.
'TIL > _TIL(Today I Learned)' 카테고리의 다른 글
데브코스 자율주행_TIL_23.09.25 (0) 2023.09.26 데브코스 자율주행_TIL_23.09.22 (0) 2023.09.22 데브코스 자율주행_TIL_23.09.21 (0) 2023.09.21 데브코스 자율주행_TIL_23.09.19 (0) 2023.09.19 데브코스 자율주행_TIL_23.09.18 (0) 2023.09.18