Language/C,C++

    [C++] K-means clustering

    K-means clustering이란? 주어진 데이터를 K 개의 군집으로 묶는 알고리즘으로 아래와 같은 특징을 가집니다. k-means 클러스터링을 통해 데이터 집합 내에서 유사한 점의 그룹을 찾을 수 있다. k-means 클러스터링은 그룹 내의 총 분산을 최소화하기 위해 데이터 세트에서 포인트 그룹을 찾는 작업이다. k-means 클러스터링은 각 데이터 지점과 중심 사이의 4차 유클리드 거리의 합인 클러스터 내 제곱합 편차를 최소화하기 위해 공간을 k개의 하위 집합으로 분할하는 작업이다. 공식적으로, k-means 군집화는 S={S1,S2, …Sk} 분할을 찾는 작업이다. K-means algorithm k-means clustering 문제는 실제로 해결하기 어려운 문제입니다. 예를 들어 우리에게 2..

    Bit 연산 매크로

    12345678910111213141516171819202122232425#ifndef __S_BIT_H__#define __S_BIT_H__ typedef long long s_bit_t; #ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif #define S_BIT_SET(NR, BITS) (NR |= (1LL

    표준출력에 텍스트 색상 입히기 (colorize printf format)

    1234567891011121314151617181920212223242526272829303132333435363738394041424344#ifndef __S_PRINT_FORMAT_H__#define __S_PRINT_FORMAT_H__ #define S_COLOR_RED "\x1b[31m"#define S_COLOR_GREEN "\x1b[32m"#define S_COLOR_YELLOW "\x1b[33m"#define S_COLOR_BLUE "\x1b[34m"#define S_COLOR_MAGENTA "\x1b[35m"#define S_COLOR_CYAN "\x1b[36m"#define S_COLOR_RESET "\x1b[0m" #define PRINT printf #define PRINT_RED(..

    [macro] 안전한 형변환을 위한 Macro

    32bit, 64bit 환경을 고려하여 개발을 하고 있다면 형변환을 무시할 수 없습니다.정수형, 포인터형 등 다양한 환경에서 데이터형의 크기가 달라지므로 무작정적인 값 대입을 문제를 초래할 수 있습니다. 그래서 간단한 Macro를 이용해 bit 무관하게 변경할 수 있는 방법을 제시합니다. Callback 함수 등의 User data로 void *를 많이 전달합니다. 이 때 정수형 데이터를 전달하고 싶다면 아래 매크로를 참고해 전달하는 것을 추천드립니다. C언어 자료형에 관한 매우 간단한 코드라 설명은 생략하겠습니다. 123456789#ifndef __S_TYPE_CONVERSION_H__#define __S_TYPE_CONVERSION_H__ #define SINT_TO_POINTER(x) ((void ..

    [C] #pragma pack( [show] | [push | pop] , n )

    #pragma 매크로 중 pack에 관련된 내용을 정리하려 합니다. 해당 내용은 C언어 프로젝트에서 한 번쯤 살펴볼 수 있는 구문인데요, 어떤걸 의미하는지 정리해보고자 합니다. [구문]#pragma pack( [ show ] | [ push | pop ] [, identifier ] , n ) #pragma pack 은 위와 같은 구문으로 구성되어 있습니다. pack 이란 단어가 무슨 의미인지 아시나요? pack 미국·영국 [pӕk] 1. (여행을 가기 위해) (짐을) 싸다 2. (보관・수송・매매 목적으로 물건을) 포장하다 네이버에서 검색해보니 위와 같은 의미를 가지고 있네요. 그럼 아래 예제를 보고 한번 더 얘기해보죠. 1234567891011121314151617181920212223242526272..

    [C++] atomic_flag

    std::atomic_flag는 원자적 Boolean 형입니다. std :: atomic의 모든 특수화와 달리, lock-free가 보장됩니다. std :: atomic 과 달리 std :: atomic_flag는로드 또는 저장 작업을 제공하지 않습니다. 아래 예제는 atomic_flag를 이용해 lock을 얻고 해제하는 간단한 예제입니다. atomic_flag는 매우 쉽게 사용할 수 있습니다. test_and_set() 메서드와 clear() 메서드를 이용해 Lock을 얻거나 해제할 수 있습니다. 그리고 최초 atomic_flag 상수는 ATOMIC_FLAG_INIT으로 초기화 해야합니다 :D linuxias@test $ g++ -std=c++11 atomic_flag.cpp -o atomic_flag..