Programming/_C++
-
_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들은 피지..
-
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