C,C++13 깊이탐색, 넓이탐색 깊이 탐색 DFS (Deep First Search)한쪽 노드를따라 마지막 노드까지 탐색후 다음 노드로 이동하여 탐색 넓이 탐색 BFS (Breadth First Search)가까운 순서를 먼저 검색DFS와 BFS의 차이 DFSBFS탐색 과정현재 정점에서 갈 수 있는 끝까지 방문하며 탐색현재 정점에 연결된 가까운 점들부터 탐색구현 방법스택 또는 재귀 함수로 구현큐 자료구조 이용전체 코드#include #include #include class Node{public: Node(int n_, int m_, int v_) { N = n_; M = m_; V = v_; } // 깊 void DFS(int x) { visited[x.. 2024. 10. 29. libboost_thread-vc143-mt-gd-x64-1_86.lib 파일을 열 수 없습니다. boost 를 포함한 프로젝트를 빌드 하다보면 위와 같은 에러가 간혹 발생함.해결방법은 lib 디렉토리를 포함하지 않아서 발생함.boost 를 받은후에 bat파일과 exe파일을 실행하면 나오는 lib폴더만 포함하게 되는데위의 에러에서 나오는 파일의 경우는 stage/lib 안에 있는 경우가 있는데 boost/libs 폴더외에 boost/stage/lib 폴더도 포함시켜주어야한다.이렇게 추가 시켜주면 이상없이 빌드가 된다. 2024. 9. 5. C++ 에서 Redis사용하기 (RedisClient) 다른 언어들은 Redis 를 사용할경우 간단하게 패키지를 설치하거나 간단하게 라이브러리 추가로 바로바로 사용이 가능하나 C++ 의 경우는 번거로운 작업이 필요하여 정리하고자 여기에 기록하기로 함Python 이나 Node 의 경우는 간단하게 패키지 설치로 바로 코드에서 포함하여 사용하거나 C#의 경우는 패키지 설치로 간단하게 한두줄로 바로 Redis에 접근 및 사용이 가능하다.허나 C++ 에서는 그러한건 없는듯하고 대표적인 라이브러리를 사용하여 Cmake 를 통한 빌드후에 나온 파일들을 포함하여야 사용가능하다.그중에 hiredis를 사용하여 C++에서 redis 를 사용하는 방법을 적어보려함hiredisC언어로 작성된 Redis 데이터베이스 클라이언트 라이브러리로, 최소한의 redis만 제공Cmake 로 .. 2024. 9. 3. .vsconfig 파일 VisualStudio 2019 vsconfig 파일 2020. 2. 5. Window 문자셋 모든 프로그램이 UNICODE 가 아니기 때문에 기존에 개발된 프로그램 호환성, UNICODE를 지원하지 못하는 운영체제 등 100% 유니코드로만 프로그램을 동작하도록 구현하지 않습니다. 그렇다면, Software를 개발할때 MBCS와 WBCS 2개 모두 개발하게 된다면 유지, 보수에 어려움이 2배가 되겠습니다. 그래서 MBCS, WBCS 모두 호환하게 되는 프로그램을 구현하는것으로 결론에 도달하게 되는데, 그래서 Windows에는 이를 해결시켜주는 메크로가 존재합니다. #include에서 정의되어 있는 Windows 스타일의 자료형을 살펴보죠. (WinString.cpp 자료 참조) typedef char CHAR; typedef wchar_t WCHAR; #define CONST const typed.. 2014. 11. 7. 문자집합 변경 우리 위대하신 MS에서 만들어주신게 있는데.. #include // 요기에 정의.. 이거하면 MFC사용안하고도 CString를 사용할수 있다 void main() { wstring strUni = CA2W("멀티바이트를 유니코드로 변환"); string strMulti = CW2A(L"유니코드를 멀티바이트로 변환"); string strUTF8 = CW2A(L"유니코드를 UTF8로변환",CP_UTF8); //string에서 포인터 얻어오는게 c_str()이듯. //CA2W나 CW2A에서 포인터 얻어오는건 m_psz 이다.. //그리고 CA2W CW2A는 기본적으로 CString 즉 (CAtlString)에 기반을 두고 고 있기때문에. //CString를 사용할때 가장 빠른다!!. // 만약 멀티 플레폼을.. 2014. 10. 23. 메모리에 올라간 프로세스에 DLL코드넣기 DLL injection은 간단히 말해 현재 메모리에 로드되어 있는 프로세스의 코드 영역에 접근해서 특정 dll을 로드하는 코드를 실행시켜 임의의 dll을 프로세스의 주소영역에 로딩시키는 것이다. 현재 메모리에 로드되어 있는 프로세스의 코드영역에 우리가 원하는 코드를 삽입하는 방법은 2가지가 있다. 첫번째로 VirtualAllocEx() API를 이용해서 타깃 프로세스의 가상 메모리 영역을 확보해서 그 영역에 WriteProcessMemory()로 우리가 원하는 코드를 삽입하는 방법이 있다. VirtualAlloc()으로 할당한 영역에 삽입한 코드를 실행시키기 위해서 thread 형태로 새로운 실행 플로우를 만든다. 그러나 VirtualAlloc() API는 Win NT 이상에서 지원하는 함수로써 win.. 2014. 10. 23. 컴파일 속도증가 시키기 Visual Studio는 Compile시 multi-processor compilation을 지원한다.processor는 각각 파일 하나씩을 담당하여 compile을 진행한다.따라서 core가 많을수록 compile속도는 증가한다.multi-processor compilation 옵션을 켰을 때compile속도가 50초에서 6초로 줄어 들었다.Project 의Property Pages에서Configuration Properties -> C/C++ ->General 맨 밑의 Multi-processor Compilation을 YES로 변경 만약 Minimal Rebuild가 켜져 있을 경우 /MP가 무시되므로 아래와 같이 변경해준다.Configuration Prop.. 2014. 7. 25. C++ 에서 ini 파일 사용하기 1. INI 파일이란... 간단히 말하면 응용 프로그램이 실행될 때 필요한 초기화 정보를 담고있는 파일 (INItialization file) 이다. 16 bit 윈도우즈 응용 프로그램들은 대부분 실행파일명과 동일한 이름을 가진 INI 파일을 가지고 있으며 윈도우즈 자신도 win.ini 라는 초기화 파일을 가지고 있다. 아스키 파일이므로 일반 텍스트 편집기로 쉽게 내용을 확인할 수 있고 그 속에 담긴 정보의 의미를 정확히 이해할 수 있는 경우라면 간단히 수정할 수도 있다. 보통 윈도우즈 디렉토리나 응용 프로그램이 설치된 디렉토리에 존재한다. 2. INI 파일에는 무엇을 기록하는가? 꼭 무엇을 기록해야 하는가는 중요치 않다. 프로그래머가 필요하다고 생각되는 정보는 무엇이든 기록할 수 있다. 일반적으로는 최.. 2013. 6. 5. 이전 1 2 다음