**Autonomous driving tech./*C++ 29

[C++] 03.17 review Unique_ptr

Smart Pointer 메모리 관리를 자동화하고 안전하게 해주는 C++의 객체이다. 아래의 코드를 보자.생성자 함수 앞에 ~이 붙어있다. 이것은,구조체에서의 소멸자로, Desturctor는 ~를 붙인다. 소멸자는 객체가 삭제될 때 자동으로 호출 되는 함수이다.#include #include using namespace std;class object {public: object(){ cout smart_pointer(new object()); //스마트 포인터, unique_ptr 사용 smart_pointer->function(); return 0;}

[C++] 03.15 review <algorithm> sort(), stable_sort(), auto

*알고리즘 ( )라이브러리 : 데이터를 정렬, 탐색, 처리하는 함수 모음, 대표적으로 정렬을 하는 sort(), find()sort() 와 stable_sort()의 차이sort() : 값이 있어도 들어온 순서를 고려하지 않고 정렬하는 것stable_sort()  : 같은 값이 있을 때 들어온 순서를 고려야하여 정렬하는 것을 말한다. sort(vec.begin(), vec.end(), greater()); >> greater() 했을시 내림차순 정렬됨 자율주행에서 이 개념을 도입해보자,🎯 🚗 자율주행에서는 언제 필요할까?차량 리스트를 "속도" 기준으로 정렬하는데, 같은 속도일 때 "먼저 감지된 차량" 순서 유지해야 할 때 👉 stable_sort()장애물 거리를 정렬할 때, 그냥 가까운 순서대로만..

[C++] 03.14 review <cmath>, <vector>

#include  pow : 거듭제곱 연산sqrt : 제곱근 연산abs : 절대값 반환exp : 지수 함수 (e^x) 계산 *exponentiallog : 자연로그 계산sin,cos,tan :  삼각 함수 계산asin, acos, atan : 역삼각 함수 계산ceil 올림 계산round 반올림 계산*올림 ceil : 3.2 > 4  , 소수점 이하가 있으면 무조건 큰 정수로 올림*반올림 round : 3.2 > 3, 3.8 > 4  , 소수점 첫째 자리에서 반올림floor 내림 계산round 반올림 계산복사 함수얕은 복사 : 주소값을 복사깊은 복사 : 실제 값을 새로운 메모리 공간에 복사컨테이너, Container 같은 타입의 여러 객체를 저장할 수 있는 묶음 단위의 데이터 구조, 쉽게 말하면 컨테이너 ..

[C++] 03.04 review

하나의 클래스가 다양한 역할을 수행하게 되는 거대 클래스는 개발자가 지양해야 함void function(){cout 자식 클래스의 객체를 부모 클래스의 타입으로 변환하는 것을 업캐스팅이라고 함::는 범위 연산자, 범위 지정자SOLID 원칙, 객체지향 설계의 다섯 가지 원칙1. 단일 책임 원칙, SRP : 클래스는 한 가지 기능만 수행해야하고, 한 가지 이유로만 변경해야 한다.2. 개방-폐쇄 원칙, OCP : 클래스는 확장에는 열려 있으나, 수정에는 닫혀 있어야 한다.3. 리스코프 치환 원칙, LSP : 자식 클래스는 언제나 부모 클래스를 완전히 대체할 수 있어야 한다.4. 인터페이스 분리 원칙, ISP : 클라이언트는 사용하지 않은 인터페이스에 의존해서는 안 된다.5. 의존 역전 원칙, DIP : 고수준..

[C++] 03.03 review

한 개의 클래스 안에서 동일한 이름으로 여러 개의 생성자를 만드는 것을 overloading이라고 함단, 생성자에 들어가는 매개변수는 다르게 해야한다.이렇게 하는 이유는 상황마다 객체를 생성할 때, 매개변수로 전달되는 값이 다를 수 있어서 여러가지 방법을 제공하는 것임소멸자, Desturctor는 스택에 할당된 객체는 함수가 종료될 때 자동으로 소멸된다, 함수가 끝나면 해당 객체가 자동으로 소멸되고, 메모리가 해제된다.리스코프 치환원칙은 '부모가 할 수 있는 일을 자식도 할 수 있어야 한다'는 규칙this->는 this 포인터를 사용해서 해당 객체의 멤버변수나 함수에 접근하는 구문이다.친구 클래스는 해당 클래스의 private 또는 protected 멤버에 접근할 수 있는 특별한 권한을 부여받은 클래스E..

[C++] 03.02 review

다형성, polymorphism : 상속받은 클래스들이 부모와 다른 다양한 특성을 가지는 것상위 개념( 부모 클래스 )의 역할을 대신할 수 있으면서 각자의 고유한 특징으로 동작하는 것이 다형성OOP에서 다형성을 구현하려면 overriding 키워드를 상속받는 클래스 안의 함수 맨 오른쪽에 적어준다.overriding 하려면 부모 클래스의 함수를 virtual 키워드를 붙여서 가상함수로 선언해야함생성자(Constructor)는 객체가 생성될 때 자동으로 호출되는 특별한 종류의 함수

[C++] 02.28 review

try{throw()} catch(){}catch() 소괄호안에는 조건식이 들어갈 수 없다.catch(...)는 모든 예외를 다 받겠다는 의미assert는 개발 과정에서 조건을 검사하여 프로그램이 예상대로 동작하는지 확인하는데 사용한다.assert()의 조건식안에 들어간 식이 false일 경우만 프로그램이 즉시 종료된다.assert는 디버그 모드에서만 컴파일 된다.noexcept를 함수에 붙여주면 예외를 던지지 않겠다는 의미이다.throw으로 예외를 던졌는데도 예외를 받을 catch가 없으면 프로그램을 강제 종료하는데 이때 종료 처리 함수를 설정하는 것이 set_terminate() 함수이다.객체지향 프로그래밍의 핵심 개념클래스( Class ) : 객체를 정의하는 설계도객체( Object ) : 클래스로..

[C++] 02.27 review

switch(var){} case 1: {} / for(i=0;i예외처리 try / catch / throw#include using namespace std;int divide(int a, int b) {    if (b == 0) {        // b가 0이면 예외를 발생시킴        throw "Error: Division by zero!";    }    return a / b;}int main() {    int num1, num2;    cout     cin >> num1 >> num2;    try {        // 예외 처리 구문        int result = divide(num1, num2);        cout     }    catch (const char* msg..

[C++] Review 02.26

구조체, struct를 사용하면 관련 값을 하나의 객체로 그룹화하므로 코드를 더 읽기 쉽고 유지, 관리하기 좋게 만들 수 있다. 함수에 전달할 argument가 많을 때 특히 유용하다.배열의 [ ] 안의 숫자는 배열의 크기를 의미한다. Ex. [3] 크기가 3개인 배열을 만들겠다는 의미문자열 작성은 라이브러리를 불러오고 큰따옴표 " " 로 문자열을 묶어야 한다.작은따옴표 ' '는 문자를 나타내는 데 사용한다. Ex. 'A'지역변수localVariable은 블록( 함수 ) 내에서만 효력 있음전역변수globalVariable은 해당 파일 전체에 효력 있음정적 변수 static 키워드를 변수 앞에 붙이게 되면 블록을 벗어나도 값이 유지됨상수 변수 const 키워드를 자료형 앞에 붙이면 해당 변수의 값은 변경..

[C++] Review 02.25

Keyword 란 특별한 의미로 미리 정의해 둔 식별자Literal이란 코드에 직접 표현된 변하지 않는 값으로, 예를 들어 int value = 5;에서 5와 같이 변수에 대입된 5, 'A', 3.14, true 등의 값들을 의미한다. 이는 char, int, double, bool 등의 기본 타입을 포함한 총체적인 개념이다.  비트 연산 AND > &, OR > |, XOR > ^bitset(a)>> 3 시프트 연산자, 오른쪽으로 3bit 만큼 시프트 ( 음수는 안됨 )포인터는 메모리 주소를 저장하는 변수// 포인터는 메모리 주소를 저장하는 변수, 타입과 변수 사이에 *을 넣음 // &는 변수의 주소를 얻는데 사용하는 연산자역참조 연산자 *은 포인터가 가리키는 메모리 주소에 저장된 값을 가져올 때 사용..