반응형

마우스 위치가 맞지 않는다

정확히 가로 세로 10px 정도 비껴간 느낌이다, 따로 설정을 해놓은 적이 없는데

알고보니

 

 

윈도우창에 시스템 메뉴를 추가한뒤에, ClientSize로 전체적으로 초기화 해야되는데

ScreenSize로 초기화 해버려서 발생했던 것 

 

 

 

아래와 같이 클라이언트 사이즈 구한뒤 초기화 작업을 다시함

 

 

 

그결과 ImGUI가 마우스 위치를 제대로 인식하고, 폰트 깨짐 현상도 없어짐

 

 

반응형
반응형

아래 코드는 char 문자열을 wchar_t 문자열로 

wchar_t 문자열을 char 문자열로 바꿔주는 코드이다 

 

#include <stringapiset.h>

void char_to_wchar(const char* input_str, wchar_t* output_wstr)
{
	int strSize = MultiByteToWideChar(CP_UTF8, 0, input_str, -1, NULL, NULL);
	MultiByteToWideChar(CP_UTF8, 0, input_str, strlen(input_str) + 1, output_wstr, strSize);
}


void wchar_to_char(const wchar_t* input_wstr, char* output_str)
{
	int strSize = WideCharToMultiByte(CP_UTF8, 0, input_wstr, -1, NULL, 0, NULL, NULL);
	WideCharToMultiByte(CP_UTF8, 0, input_wstr, -1, output_str, strSize, 0, 0);
}
반응형
반응형

 

programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 ��

programmers.co.kr

위 문제를 c++로 풀면서 string을 썼는데

문득 Java 를 배울때 string 을 쓰기 보다는 stringbuilder 를 쓰는게 퍼포먼스 면에서 좋다고 배웠던 기억이 났다

그러나 해당 코드를 c++로 짜는 중이었기 때문에 c++ 에 stringbuilder는 없어서 쓸 수 없었고 대신 stringstream이 비슷한 역할을 하는 것 같아서, stringstream으로 코드를 작성한뒤 성능 측정을 비교해 봤는데

//A코드 : stringstream 사용
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>

using namespace std;

bool cmp(int a, int b)
{
    stringstream ss1;
    stringstream ss2;
    ss1 << a << b;
    ss2 << b << a;
    return ss1.str() > ss2.str();
}


string solution(vector<int> numbers) {

    stringstream ss;
    sort(numbers.begin(), numbers.end(), cmp);
    for (auto& i : numbers)
    {
        ss << i;
    }
    return ss.str()[0] == '0' ? "0" : ss.str();
}
//B코드 : string만 사용
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool cmp(int a, int b)
{
    string s1 = to_string(a) + to_string(b);
    string s2 = to_string(b) + to_string(a);
    return s1 > s2;
}

string solution(vector<int> numbers) {

    string answer = "";
    sort(numbers.begin(), numbers.end(), cmp);
    for (auto& i : numbers)
    {
        answer += to_string(i);
    }
    return answer[0] == '0' ? "0" : answer;
}

 

B코드, 즉 string을 사용한 쪽이 퍼포먼스가 A에 비해서 더 잘나오는것을 볼 수 있었다, 어떤 부분들은 2~3배 가까이 차이가 난다. 

c++ 의 stringstream 은 Java 의 stringbuilder와 달리 퍼포먼스를 위해 쓰는 용도는 아닌것 같다,

특히나 다른 c++ 사용자들도 stringstream을 사용했을때 느리더라 라는 글들도 몇몇개 보인다.

 

참고 :

cppjava.tistory.com/63

 

[퍼온글] 문자열 숫자로 바꾸기 stringstream

출처 : http://www.buggymind.com/83 요즘 C++로 Admission Control System을 개발중입니다. 근데 프로그램을 짜다 보면 으례 그렇겠지만 스트링을 숫자로, 숫자는 스트링으로 변환할 일이 많이 생기더군요. 종전

cppjava.tistory.com

stackoverrun.com/ko/q/1443219

 

반응형

+ Recent posts