본문 바로가기

분류 전체보기30

난수와 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.
[Dart]Named 파라미터 Dart는 네임드 파라미터 기능을 제공한다. 메소드를 호출할 때 파라미터의 이름을 대고 파라미터의 값을 지정해주는 것을 네임드 파라미터라고 한다. C#에서는 메소드에 별도 처리없이 일반적인 파라미터 값만 지정하고 호출하든 네임드 파라미터를 사용하든 자유롭지만, Dart에서는 이를 메소드를 선언할때 명확히 해줘야 한다. 아래의 코드 예시는 일반적인 함수의 호출 사례이다. void printHelloWorld(int numbers, String postfix) { for (int i = 0; i < numbers; i++) { print('hello ${i + 1} $postfix'); } } void main() { printHelloWorld(5,'world'); } 이를 네임드 파라미터를 지원하는 함수.. 2023. 3. 14.
VS에서 두개 이상의 프로젝트 동시에 실행하기 위의 그림과 같이 솔루션에 여러개의 프로젝트를 생성하여 작업을 하게되는 경우가 종종 있다. 이럴경우에 두개 이상의 프로젝트를 동시에 VS에서 간단하게 실행하는 법을 소개하고자 한다. 솔루션에서 마우스 오른쪽을 클릭하여 속성(Properties)을 클릭 공용속성(Common Properties) > 시작 프로젝트(Startup Project) 시작 프로젝트의 Default 세팅은 한개의 시작 프로젝트만을 실행하도록 되어 있다. 여러개의 시작 프로젝트를 클릭해주고, 동시에 실행할 프로젝트들의 Action을 None에서 Start로 바꿔주자. Ok를 눌러주고 프로젝트 빌드를 하고 실행을 해주면 설정이 적용되어 위의 설정대로라면 Dummy Client와 ServerCore가 실행이 된다. 2023. 3. 13.
[C++][백준][정렬]2751 - 수 정렬하기 2 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 이 문제의 함정은 로직보다, C++에서 제공하는 기능을 생각없이 사용 했을때 빠지기 쉽다. 예제코드 두개를 준비하였다. 예제코드 1 #include #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); int total_no; std::cin >> total_no.. 2023. 3. 6.
[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.
[VS]Visual Studio에서 라이브러리를 만들고 사용하는법 Visual studio에서 복수의 프로젝을 생성하고 사용하는 방법은 간단하다. (single exe with mulitple lib) 예시를 위하여 빈 프로젝트를 만들어보겠다. Step 1 Engine 프로젝트 생성 위의 예시에서는 libary역활을 할 Engine 프로젝트를 먼저 생성하였지만, exe를 빌들할 Application 프로젝트를 먼저 만들어도 괜찮다. Engine 프로젝트에 소스코드를 담을 src폴더를 만들어 주었다. Engine 프로젝트에 PrintMsg를 정적 멤버함수로 가지고 있는 HelloWorld 클래스를 생성하였다. Library 구성 설정 이제 이 함수를 나중에 만들 Application 프로젝트에서 사용하기 위해서, 아래 사진과 같이 Engine의 속성 페이지로 가서 구성 .. 2023. 3. 4.
[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.