분류 전체보기
-
_C++_알고리즘_Part_1Programming/_C++ 2023. 9. 19. 17:59
STL의 정렬 알고리즘은 순차 컨테이너와 배열에 적용할 수 있다. list, forword_list는 컨테이너 내부 구조에 최적화된 정렬 기능을 제공하기 때문에 굳이 사용할 필요가 없다. vector, deque, array클래스 및 배열에 대해서는 유용하게 사용할 수 있다. #include으로 사용할 수 있다. 정렬 알고리즘 sort() sort는 정렬을 도와준다. sort의 시간 복잡도는 N에 대해 O(NlogN). int arr[5] {3, 5, 1, 2, 6}; sort(arr, arr+5); // arr 정렬 vector v{3, 5, 1, 2, 6}; sort(v.begin(), v.end()); // v 정렬 sort(v.begin(), v.end(), greater()); // v 역순 정..
-
_C++_Smart_PointerProgramming/_C++ 2023. 9. 19. 17:14
C++의 raw 포인터는 강력한 수단이지만, 집중력이 조금만 흐트러지면 버그가 발생하가 쉽다. 이를 보완하기 위해 C++11에서는 스마트 포인터를 제공한다. 종류는 세 가지(네 가지 이지만, 하나는 비권장 기능) std::unique_ptr std::shared_ptr std::weak_ptr 1. unique_ptr unique_ptr은 독점적 소유권을 갖는 포인터.(피지칭 객체를 가르키는 포인터가 오직 그것 하나 뿐임을 의미) unique_ptr이 소멸될 때 피지칭 객체도 소멸됨. 이동 전용 형식으로서 복사가 불가능. 2. shared_ptr shared_ptr은 독점적 소유권을 갖지 않는 포인터. shared_ptr이 하나의 객체를 가리킬 수 있음. 같은 대상을 가리키는 shared_ptr들은 피지..
-
_Process_memory_structureProgramming/_Common 2023. 9. 19. 16:01
프로그래밍을하면 변수의 타입에 따라 변수가 위치할 메모리 섹션이 결정된다. 배열과 객체는 힙영역, 내장 기본 타입의 변수는 스택영역에 할당된다. 메모리 구조를 모른채로 프로그래밍을 하기도 하지만, C++에서는 선언하는 변수에 따라 변수가 위치하는 메모리 섹션이 달라져서 그에 따라 성능에 유의미한 차이를 만든다고 한다. (OS가 가상메모리를 제어한다.) 위의 그림은 32bit 프로세서 메모리 구조로 32bit 시스템에서는 메모리 주소가 32bit로 표현된다. 커널 메모리가 1 ~ 2 GB를 차지하기 때문에 실제로 유저 영역의 메모리 크기는 2 ~ 3 GB이다. 각 박스는 메모리 섹션 또는 세그먼트라고 부른다. 힙(Heap) 힙은 프로세스가 동작하며 동적으로 할당, 해제되는 메모리 섹션이다. OS에서 가용 ..
-
데브코스 자율주행_TIL_23.09.18데브코스 자율주행 Perception/_TIL(Today I Learned) 2023. 9. 18. 21:51
오늘 배운 내용 1. Git & Github - Git과 Github의차이 - 기본적인 명령어 2. C++ - 기본 자료형 및 리터럴 - 값과 참조 1. Git & Github Git과 Github의 차이? Git은 버전관리 소프트웨어로 로컬 저장소의 모든 변경사항을 기록하여 프로젝트를 관리할 때 도움을 준다. Github는 Git을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스이다. Git은 로컬 저장소에서 작동하기에 Github를 사용하여 웹 상에서 업로드하고 공유할 수 있다. 둘의 관계는 커피숍과 커피의 느낌?😃 기본적인 명령어 $ git init $ git status $ git add $ git commit $ git push $ git pull $ git branch $ git checkout..
-
Git & GithubTools/Git 2023. 9. 18. 19:46
Git & Github Git은 버전관리 소프트웨어로 로컬 저장소의 모든 변경사항을 기록하여 프로젝트를 관리할 때 도움을 준다. Github는 Git을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스이다. Git은 로컬 저장소에서 작동하기에 Github를 사용하여 웹 상에서 업로드하고 공유할 수 있다. 윈도우10에 git을 설치하고 test 폴더에서 몇 가지 예시를 사용해보았다. 우선 git을 제대로 설치하였다면 git --version 명령어로 git의 버전을 확인 할 수 있다. 현재 test폴더에 git status 명령어를 사용해도 git과 연결되어 있지 않기 때문에 다음과 같이 출력된다. git init 명령어로 저장소를 생성하고 git status 명령어를 사용하면 다음과 같이 아직 commit ..
-
C++_mapProgramming/_C++ 2023. 7. 27. 15:40
map은 각각의 노드가 key와 value가 한 쌍으로 이루어진 트리이며 중복을 허용하지 않는다는 특징이 있다. 우리가 Alogrithm 문제를 풀면서 key와 value를 다룰때가 많은데 Python의 경우 dictionary가 있지만, C++에서는 map을 사용해서 문제를 풀어나가게 된다. 이번에는 map을 어떻게 사용하는지 한번 알아보자. #include //map의 기본형태 map test_map; map은 key type과 value type으로 선언을 한다. map에 insert()를 사용하여 값을 삽입하는데 삽입이 되면 자동으로 정렬을 하며, 기본적으로는 오름차순 정렬을 한다. 기본적인 사용법은 아래의 예제와 같다. #include #include using namespace std; int..
-
C++_address_pointer_referenceProgramming/_C++ 2023. 7. 25. 16:30
우리가 변수를 사용하는 것은 메모리를 사용한다는 것인데, C++에서는 포인터라는 기능을 사용하여 메모리에 저장된 변수의 위치를 사용할 수 있다. 포인터를 이해하는 것은 쉽지 않지만 이해한다면 C++ 코딩하는데 큰 도움이 될 수 있다고 생각한다. 1. 메모리 & 주소 (memory & address) 변수는 메모리에 저장되고, 변수가 메모리에 저장된 위치를 address(주소)로 나타낸다. 흔히 우리가 생각하는 집 주소, 홈페이지 주소, 이메일 주소와 같다고 생각하면 된다. 실제로 변수를 지정하고 변수의 주소를 보면 다음과 같다. #include using namespace std; int main() { int a = 5; cout