C++

    [C++] 셋(set),맵(map)

    [C++] 셋(set),맵(map)

    셋(set), 멀티셋(multiset), 맵(map), 멀티맵(multimap)은 이진 탐색 트리(BST)를 기반으로 하는 연관 컨테이너(associative container)입니다. (정확히 말하면 Red-black-tree. 스스로 균형을 맞추는 bst라고 생각) 따라서 vector,list,deque같은 시퀀스 컨테이너들과 비교했을때, 트리구조가 갖는 장점을 그대로 가져갑니다. 셋(set) 자동으로 정렬됨 중복된 원소 없음(중복된 원소를 허락하고 싶다면 multiset 사용) 데이터의 존재 유무를 판별할때 사용합니다. std::set s; //셋 정의 s.insert(10); //셋에 키값 추가 //셋에 해당 키가 있는지 확인하는 방법 auto itr = s.find(20); if (itr != ..

    [C++] 소숫점 고정해서 출력하기

    소숫점 고정 cout

    [C++] 순열 구하기 (std::next_permutation, std::prev_permutation)

    해당 포스트를 참조했습니다. https://baebalja.tistory.com/14 모든 경우의 수 정렬 벡터를 정렬할 때 정렬 될 수 있는 모든 경우의 수를 물어보는 문제가 있다. 이러한 경우 해당 함수를 사용한다. 즉, A B C 를 정렬하고 싶은데 모든 경우를 정렬하면, ABC ACB BAC BCA CAB CBA 순으로 정 baebalja.tistory.com c++에서 순열(permutation)을 구해야 하는 경우가 있습니다. 특히 알고리즘 문제를 풀다 보면 자주 발생합니다. 헤더파일 #include 사용법 벡터의 경우 next_permutation(v.begin(), v.end()) prev_permutation(v.begin(), v.end()) 배열의 경우 int arr[n]; next_..

    [C++] 2개이상의 묶음으로 저장하기(std::tuple)

    std::pair의 확장판 느낌인 std::tuple입니다. 헤더파일 #include 선언 tuple t; 2개,3개,4개,5개... 등 원하는 만큼의 자료형을 묶을 수 있습니다. 값 생성(변경) tuple t = make_tuple(1,2,3.3,"hello"); make_tuple( )을 사용합니다. 값 얻기 cout

    [C++] 배열을 매개변수로 받는 다양한 방법

    C++ 사용자라면, 매개변수를 받을때 참조(&)로 받는 것이 효율적이고 자주 사용한다는 것을 알 것입니다. 근데 배열은 어떤식으로 받아야 효율적일까요? 그 방법들을 소개하고자 합니다. 불가능한 방법 일단 이런 형식을 생각해 볼 수 있겠습니다. (받는 것이 10칸짜리 배열이라 가정) void func(int &arr[10]) { } 그냥 다른 참조 쓰듯이 똑같이 int &arr[10] 이런식으로 매개변수를 받을 수 있을까요? 정답은 불가능 입니다. c++에서 위와같은 문법은 금지되어 있습니다. [ ]의 연산 우선순위가 &보다 높기 때문에 괄호가 없다면 int &(ref[3]) 과 같이 선언되기 때문이라고 생각합니다. 포인터로 배열 받기 void func(int* arr) { } 위 방법은 가능합니다. 흔한..

    [C++] 올림,내림,버림,반올림

    헤더파일 #include 올림(ceil) double ceil (double x); float ceil (float x); long double ceil (long double x); 사용 예시: cout

    [C++] 쌍으로 저장하기(std::pair)

    [C++] 쌍으로 저장하기(std::pair)

    template struct pair; std::pair는 위 코드에서 보는것 처럼 템플릿 구조체입니다. template 이랑 template 동일한 의미입니다. 현재는 typename을 쓰는것이 표준형식입니다. 호환성을 위해 과거에 사용하던 class로 표기법을 지원하고 있습니다. (둘의 차이에 대한 정리글 링크) (상세 레퍼런스보기: 링크) 헤더 파일 #include #include #include 결론적으론 std::pair는 위 헤더 3개중에 아무거나 include하셔도 됩니다. 사실 std::pair는 utility속에 들어있습니다. 그러나 algorithm과 vector헤더파일이 utility헤더를 포함하고 있기 때문에 셋 중 아무거나 include해도..