목록개발/C++ (6)
Joonas' Note
종종 사용하는 std::binary_search와 그 친구들(lower_bound, upper_bound)의 구현입니다.이 친구들은 헤더에 있습니다. 평소 쓰던 스타일을 그대로 작성하여 올립니다.binary_search가 왜 그 lower_bound와 key가 같은지만 비교하는 지는, 다른 글에서 설명하였다. [보기]코드
저는 quick sort를 기반으로 구현했고, 그 중에서도 중간값이 아닌 (위치가) 중앙에 있는 값을 사용했습니다.이 정도만 구현해도 많은 문제는 생기지 않았습니다. 다만 실제 std::sort 는 구조가 조금 다른 것으로 알고 있습니다. 크기가 100개 이하인 케이스는 insertion sort를 사용하는 등 최적화를 위해서 수정했다고 하네요. template 함수로 작성했기 때문에, 타입은 별도로 명시하지 않아도 됩니다.int형 배열 a[100]에 대해서도, std::sort 함수 쓰듯이 sort(a, a+100) 이라고 호출해도 동작합니다. 이전 게시글에서 구현한 vector를 파라미터로 넘겨도 동작합니다. 즉, sort(vec.begin(), vec.end()) 가능합니다.코드
이전 블로그의 원문 : http://joonas-yoon.blogspot.com/2017/04/sublime-text-3.html 가벼운 코딩을 위해 서브라임 텍스트로 간단한 코드를 실행할 환경을 구성하였다. Windows10 에서 MinGW를 설치한 후, g++을 연결하여 빌드되도록 스크립트를 수정하여 사용하고 있었는데 어느날 아래와 같은 오류가 났다. 프로시저 시작 지점 _Jnflx__cxx1112..........을(를) DLL main.exe 에서 찾을 수 없습니다.main.exe는 내가 실행하려는 파일이었고, 앞에 문자열은 에러메시지인 것 같은데, 암호코드처럼 길고 복잡했다. 여튼 코드를 하나씩 지워본 결과 헤더를 추가하고 std::string을 사용하려면 위 에러가 발생했다. 원래 컴파일하던 ..
요구사항 최소 8GB RAM, 권장 16GB RAM 100GB 디스크 공간 Visual Studio 2017 이상 Windows 7 이상 환경 설정 Visual Studio Desktop development with C++ (C++를 사용한 데스크탑 개발) MFC/ATL support (x86 및 x64용 Visual C++ MFC) 워크로드에서 위 항목들을 설치해야 합니다. VS 2017 이상부터는 Visual Studio Installer에서 설치할 수 있습니다. Windows 10 SDK https://developer.microsoft.com/ko-kr/windows/downloads/sdk-archive 버전 10.0.17134 이상 (선택) SDK Debugging Tools Window 1..
네임스페이스 std 아래에 있는 함수 getline은 한 줄 단위로 입력 받으며, 스페이스와 탭 등의 공백 문자들도 그대로 유지된다.하지만 C++ 레퍼런스[1][2]에서는 공백에 대한 예제는 잘 나와있지 않아서 글로 남긴다. 아래 코드로 여러 케이스를 확인해보자. test-getline-input.txt에 적힌대로 입력하면, test-getline-output.txt와 같은 출력을 확인할 수 있다. ^는 문자열의 시작을, $는 문자열의 끝을 표시하기 위해 사용했다.공백 문자와 탭 문자가 포함된 문자열들, 심지어는 길이가 0인 문자열도 모두 잘 입력되는 걸 확인할 수 있다.
Maze Generator in C++ 2학년때 학교 수업으로 MFC 배우고 방학 때 심심하고 해서 미로 생성기를 만들자! 했다. (사실은 배운게 C++, MFC 밖에 없어서..)윈도우 7 + Visual Studio 2012 로 개발한 걸로 기억한다.미로는 생각보다 단순하게 만들 수 있다. 상/하/좌/우 중 랜덤하게 하나씩 선택해서 DFS를 하면 된다. DFS를 마치고 돌아가면서 백트래킹으로 방문한 셀들을 방문할 때 진행했던 방향의 칸을 닫으면 된다. 각 셀을 4비트로 나타내면 벽의 상태를 저장할 수 있다. 백트래킹 하면서 진행한 방향에 따라 해당 셀의 비트를 적절히 건드리면 쉽다.나중에 경로 찾을때도 벽의 존재를 비트의 상태로 확인하면 편하다. 아래에 코드 첨부 랜덤으로 칸을 누비면서 미로를 만들어야..