---C++ 역량 강화--- 38

to_string, to_wstring

[[[문제]]]클라이언트와 서버를 통한 내 멋대로 채팅을 구현하고 있는 도중에 문자열과 정수를 합쳐야하는 상황이 발생했다. to_string 전역 함수를 사용하면 쉽게 해결할 수 있다.c언어 함수를 사용했을 때는 char buf[]와 swprintf를 사용해서 정수를 문자열로 변경시킨 다음 wcscat으로 합쳤던 것 같다.c++ reference에 들어가 보면 정말로 swprintf를 사용하고 있다.format으로도 string 변환을 할 수 있긴 하다.실제로 클라이언트에서 mouse 좌표를 화면에 출력할 때 format으로 변환하였다.==소스 코드==wchar_t로 문자열을 저장하고 있기 때문에 L" " 이렇게 사용한다.콘솔창에 출력하고 싶다면 wcout   [1] : ~~~,   [2] : ~~~ 이..

partition, nth_element, partitial_sort, sort

[[[원리 분석]]]partition: partition을 이용하여 길이가 1인 문자열과 나머지 문자열을 분리하라. 이제는 이것만 보고도 어떻게 사용하는 함수인지 바로 예측 가능해야 한다.회사에서도 이런식으로 자신들의 함수를 정의한 메뉴얼을 만들어서 건네줄텐데 우리는 그것을 사용할 줄 알아야 한다.시작 주소, 끝 주소, 조건자함수구현은 안하겠다. 사용 방법만 알아보자. ==헤더 파일==#include  #include  #include  #include #include #include  ==소스 코드==https://koreatopclass.tistory.com/20 1. 정렬되어 있지 않아도 분리할 수 있다는 것을 알려주기 위해 shuffle 함수를 사용하였다.https://koreatopclass.t..

shuffle

[[[문제]]] shuffle함수를 이용하여 요소들의 위치를 섞어보자  [[[원리 분석]]] 랜덤 엔진을 사용해서 무작위로 값을 섞는다.==헤더 파일==#include  #include  #include  #include  #include ==소스 코드==https://koreatopclass.tistory.com/20 https://koreatopclass.tistory.com/18 올바르게 섞였다.==함수 구현==함수 구현을 해보고 싶어졌다. 감이 잘 안오는데...c++ reference에 있는 샘플 코드를 가져왔다.1. difference_type diff_t로 설정해준 이유는 iterator의 뺄셈이 가능하도록 하기 위해서다.그러니까, 특정 iterator의 거리 차이를 구할 수 있도록 diffe..

default_random_engine, distribute, random_device

[[[서론]]]c++ 표준에는 랜덤값을 추적 불가능 하게 만들라고 권고하고 있다.랜덤이라는 것은 예측 불가능 이라는 의미다.지구에는 지금도 어디선가 벼락이 떨어지고 있는데 어디서 떨어질지 우리는 전혀 알 수 없다.그것을 예측 불가능 하다고 말한다. [[default_random_engine]]기본 엔진이지만 매우 강력하다.19937개의 비트 상태를 갖고 있으며 Mersenne 소수에 기반한 다항식을 사용하여 난수를 생성한다. 따라서 추적하기에 매우 복잡하다.다항식을 통해 만들기 때문에 100% 예측이 불가능한것은 아니지만 인간이 할 수 없을 정도로 복잡하기 때문에 사실상 불가능한 것이다.따라서 이것을 Pseudo - random number generation 이라고 한다. 가짜 - 랜덤 숫자 생성기라는..

print, format

iota에 이어서 간단히 설명하고 넘어가겠다.사용법만 알면 되지 이것을 함수 구현 해보기는 힘들 것 같다. [[[일단 print 부터]]]보다싶이 since c++23 따끈따끈한 함수이다. c++ reference에 올라와 있는 사용 예제다.  0, 1, 2순서로 인자가 들어간다.출력 결과: Hello C++23! 이렇게 된다.==헤더 파일==#include  #include  #include  #include #include #include  ==소스 코드==일반 적인 출력 출력 순서를 바꿔보자 생략된 부분cout을 생략하고 사용해도 된다.cout에 파일을 넣으면 파일에 출력이 된다. 파일에 출력해보자 가운데 정렬 + 2칸씩 띄어서 출력^는 가운데 는 오른쪽 정렬 문자도 띄어쓰기 가능?안되네. 이건 몰..

iota

==헤더파일==#include #include val부터 시작해서 1씩 증가한 값을 컨테이너에 넣는 알고리즘.val이 0이라면 0부터 시작이니 0, 1, 2, 3, 4...val이 1이라면 1부터 시작이니 1, 2, 3, 4, 5... ==예제 코드==1. 1부터 값을 더한다.2. 벡터 v의 시작 ~ 끝까지 1씩 증가시켜서 넣는다.  ==함수 구현==예제 코드에서 끝내려고 했는데 함수 구현을 해보고 싶어졌다.말도 안되게 간단하다.c++ reference에서는 어떻게 만들었을까?내가 만든 코드랑 하나도 다를게 없다.while문이 for문으로 바뀐 것 뿐이다. 쉬운 알고리즘 함수기 때문에 간단히 정리하고 넘어간다.더 할 이야기도 없다. 학습 장소: 한국공학대학교 게임공학과 수업참고: https://en.cp..

sample

[[[문제]]] 임의에 값을 출력하라 - 랜덤 번호  [[[원리 분석]]] 1. vector에 1 ~ 45까지의 값을 저장iota를 사용해도 되고 for문 돌려서 저장해도 된다.val부터 시작해서 1씩 증가한 값을 컨테이너에 넣는 알고리즘.val이 0이라면 0부터 시작이니 0, 1, 2, 3, 4...val이 1이라면 1부터 시작이니 1, 2, 3, 4, 5...너무 많이 사용해본 함수라서 사용법은 이정도만 설명한다.2. sampling 함수를 사용해서 컨테이너에 들어있는 숫자 중에 임의에 수를 꺼내서 화면에 출력3. 총 6개 출력 begin, end, cout, 6, default_random_engine ==헤더 파일==#include  #include  #include  #include  #incl..

accumulate와 reduce의 차이

[[[accumulate 설명]]] 시작 반복자, 끝 반복자, 초기 값first ~ last까지 값을 "누적"한 후 "값을 return"한다.예를들어 어떤 컨테이너 v에 int값이 1,2,3,4,5들어가 있다.first = v.begin(), last = v.end(), initval = 0 이라고 한다면0부터 시작해서 0 -> 1 -> 3 -> 6 -> 10 ->15 이렇게 값을 누적한 후 15를 리턴한다.initval = 1이라면 1 -> 2 -> 4 -> 7 -> 11 -> 16 이렇게 값을 누적한다.정리: 1. 값을 누적 2. 값을 return간단한 원리니까 함수를 구현해보자. 원본 사용==헤더==#include  #include  #include  ==소스 코드==1부터 시작해서 값을 누적하여 ..

all_of, any_of, none_of

[[[ all_of  문제]]] 벡터 v가 원소로 가지고 있는 문자열들의 길이가 모두 5 이상인가? 인자1: begin()인자2: end()인자3: 조건자(교과서 홈페이지 읽는 방법 연습)p(v)는 v type(VT)가 뭐든  bool로 변환된다. 또한 value category에 무관하게 bool로 변환된다.value category는 iterator type을 말하는 듯 하다. random access iterator 이런것들.수정되지 않는다. predicate(조건자)이란 bool값을 return하는 callble한 것들이다. 호출 가능한 것은 함수, 함수객체, 람다. 일반 함수도 받을 수 있는지는 잘 모르겠다. p 조건자의 실행은 많으면 first ~ last만큼 걸린다. "application ..