본문 바로가기

C++13

난수와 std::map을 사용한 랜덤 이벤트 시간 생성 예제 아래 코드는 std::map을 사용하여 200개의 랜덤한 시간 간격을 가지는 "dummy" 문자열을 저장 합니다. #include #include #include #include #include typedef int64_t Time; typedef std::map TimeMap; const int num_entries = 200; Time random_time(Time start, Time end) { std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution dist(start, end / num_entries); // 2 return dist(gen); } void populate_map(Time start, Time en.. 2023. 7. 17.
[C++][프로젝트]판도라 라이브러리 배포를 위한 준비 https://github.com/KTigerFIre/cpputilities_pandora GitHub - KTigerFIre/cpputilities_pandora Contribute to KTigerFIre/cpputilities_pandora development by creating an account on GitHub. github.com 4개의 유틸리니 클래스를 내포한 C++ 라이브러리를 만든다. 프로젝트 명 Pandora 미션 4개의 유틸리티 클래스를 내포한 C++ 라이브러리를 만들어 github에 배포한다. 버전 0.1 기능 - StopWatch - LapLogger : 코드의 라인 별로 lap 타임을 측정후 저장하여, 총 걸린 시간을 측정하는 프로그램 - TimeSpacer : 무한하게 작.. 2023. 3. 5.
[c++][프로젝트]Pandora라이브러리 LapLogger 실행하는 코드라인의 execution time을 측정하는 class이다. Lap 이란 스톱워치에서 측정되는 기능으로, 각 구간의 차이를 측정해 주는 기능이다. (달리기에서 1등 선수와 2등 선수의 시간 차이 같은 거 측정 한거) //lap_logger.h #include #include "stop_watch.h" #include #include class LapLogger { public: LapLogger(bool enableModule = false); static const int LAP_LOGGER_MICROSECOND = 1000000; static const int LAP_LOGGER_MILLISECOND = 1000; static const int LAP_LOGGER_SECOND = 1; b.. 2023. 3. 5.
[C++]인라인 함수 Udemy에서 C++ 언 매니지드 프로그래밍을 수강하면서 배운 내용을 정리한 것입니다. 예제 코드 int GetAge(const Cat* ptr) const { return ptr->mAge; } void Foo() { Cat myCat(2,"츄츄"); int myCatAge = myCat.GetAge(); } int main() { Foo(); return 0; } 앞서 설명되었 다시 피 함수는 호출되면서 스택의 공간을 할당받아 사용한다. main이 에서 Foo() 함수가 호출된다. myCat 개체를 위한 공간을 할당받는다. myCatAge 변수를 위한 공간을 할당받는다. myCatAge는 값을 받기 위해 myCat개체의 GetAge함수를 호출하면서 또 스택에 새로운 공간을 할당받는다. 그러면 이제 스.. 2023. 3. 4.
[C++]Static(정적) 키워드 Udemy에서 C++ 언 매니지드 프로그래밍을 수강하면서 배운 내용을 정리한 것입니다. Static 키워드 범위(scope)의 제한을 받는 전역 변수 : 실행 도중 딱 하나만 존재하는 변수, 단 접근이 제한됨. 제한되는 범위는? 파일 속 네임스페이스 속 클래스 속 함수 속 static 혐오론자들이 존재하기는 함 OOP에 어울리지 않는다고 생각하는 분들. C++는 코드를 소스 파일 단위로 컴파일해서 나온 오브젝트 파일들을 링크 단계에서 서로 연결한다. 소스 코드 파일마다 정의된 이름은 외부 링크나 내부 링크를 통해 서로 연결된다. 외부 링크로 연결되면 다른 소스 파일에서 이름을 사용할 수 있다. 함수나 전역 변수는 기본적으로 외부 링크가 적용된다. 내부 링크(정적 링크)로 연결되면 같은 파일에서만 사용할 .. 2023. 3. 3.
[C++]금지된 Forbidden의 C++ 이 글은 16년 경력의 소프트웨어 개발자 David Barr 님의 Forbidden C++이라는 영상을 요약한 글입니다. https://www.youtube.com/watch?v=j0_u26Vpb4w&t=145s 실제로 소프트웨어 개발자로 일하면서 내가 사고를 치기도 하고, 실제로 안전하지 않게 쓰인 코드를 보기도 한 적이 있다. 이러한 실수들을 피하기 위하여 자신에게 다시 새기는 의미로 이 글을 작성한다. namespace std #include #include using namespace std; namespace ns1 { void TestFunction() { cout 2023. 3. 2.
[C++]소켓 프로그래밍 라이브러리 3선 아쉽지만, C++은 언어에서 자체적으로 소켓 프로그래밍을 위한 기본 라이브러리를 탑재하고 있지 않다. 아마도 C++의 지향점이 Java나 C#과는 다르기에 그런 것으로 짐작된다. 그렇기에 자연스럽게 외부의 라이브러리를 쓰게 된다. 윈도 환경에서 C++로 소켓 프로그래밍을 하기 위해 가장 흔하게 쓰이는 3개의 라이브러리가 있다. Winsock (Windows Sockets) - 소켓 프로그래밍과 네트워크 서비스(IP라우팅 & Name Resolution)를 제공하는 마소의 라이브러리이다. Winsock은 TCP와 UDP 프로토콜을 모두 제공한다. 그리고 소켓 통신의 기본이 되는 함수들을 제공한다. Boost.Asio - Boost는 크로스 플랫폼을 지원하는 C++ 라이브러리이다. 다양한 기능을 가지고 있으.. 2023. 3. 2.
[C++]파일 입출력(I/O) Udemy에서 C++ 언 매니지드 프로그래밍을 수강하면서 배운 내용을 정리한 것입니다. 파일 입출력 ifstream 파일입력 ofstream 파일 출력 fstream 파일 입력 및 출력 파일 스트림에 > 조장자 (manipulaotr)등 도 쓸 수 있음 //읽기 전용으로 파일을 오픈 ifstream fin; fin.open("helloWorld.txt"); //Tm기 전용으로 파일을 오픈 (파일이 없으면 만듦) ofstream fout; fout.open("helloWorld.txt"); //읽기와 쓰기 범용으로 파일을 오픈 fstream fs; fs.open("helloWorld.txt"); open() 각 스트림마다 open() 메서드가 있음 fin.open("HelloWorl.txt",ios_bas.. 2023. 3. 1.
[C++]std::string C++의 신 기능은 항상 우월한가? Udemy에서 C++ 언매니지드 프로그래밍을 수강하면서 배운 내용을 정리한것 입니다. std::istringstream std::cin과 비슷: 키보드 대신 string으로부터 읽어옴 sscanf()와 비슷 std::ostringstream std::cout와 비슷 : 콘솔 대신 string에 출력함 sprintf()와 비슷 cout, cin도 스트림이다. 하지만 자주 쓰이는 기능은 아님 현업에서 C++ 개발을 할때 , C 헤더를 써도 될까요? 현업의 C++ 애플리케이션에서는 여전히 성능 상의 이유로 많은 C 함수들을 사용. C C++ 그럼에도 std::string class는 정말 유용하다! 성능 이전에 문자 배열 길이에 대한 고민이 줄어들어 개발자의 실수로 인한 에러를 방지하는데 도움을 준다. 하지만.. 2023. 3. 1.