C++의 vector에 저장된 값으로 부터 표준편차와 평균을 구하는 예제 코드입니다. 2021. 10. 10 - 최초작성 #include #include #include #include #include using namespace std; int main() { vector v = {1, 2, 3, 4, 5}; double sum = std::accumulate(v.begin(), v.end(), 0.0); double mean = sum / v.size(); std::vector diff(v.size()); std::transform(v.begin(), v.end(), diff.begin(), [mean](double x) { return x - mean; }); double sq_sum = std::..
vector에 저장된 원소중에 특정값을 지우는 예제코드입니다. 2021. 9. 22 - 최초작성 #include // for std::remove #include #include using namespace std; int main() { vector v = {1, 2, 3, 4, 5}; for(int i=0; i
vector 객체 중에 똑같은 값이 있는 것을 제거할 방법을 고민하다가 중복 체크가 될까 하면서 set 컨테이너에 vector 객체를 넣어봤습니다. 예상되로 잘 되네요. 2021. 9. 22 - 최초 작성 #include #include #include using namespace std; int main() { vector a1 = {1, 2, 3, 4, 5}; vector a2 = {1, 2, 3, 4, 5}; vector c1 = {1, 2, 0, 4, 5}; set s; printf("s.insert(a1) : {1, 2, 3, 4, 5}\n"); auto ret = s.insert(a1); if (ret.second) printf("삽입\n"); else printf("중복\n"); printf..
C++에서 중복된 정수값을 체크할 방법을 찾다가 set 컨테이너를 사용해봤습니다. set의 insert 함수를 사용할 경우 리턴값을 체크하여 중복 여부를 확인할 수 있네요. 2021. 9. 22 - 최초작성 #include #include using namespace std; int main() { set s; auto ret = s.insert(1); printf("s.insert(1) : "); if (ret.second) printf("삽입\n"); else printf("중복\n"); ret = s.insert(1); printf("s.insert(1) : "); if (ret.second) printf("삽입\n"); else printf("중복\n"); ret = s.insert(2); pri..
로지텍 웹캠 C920 처럼 특정 웹캠의 경우 윈도우에서 OpenCV를 사용하여 웹캠으로 부터 영상을 가져오려고 하는 경우 일정시간을 기다려야 영상이 보이기 시작할 수 있습니다. 2021. 6. 10 최초작성 이 경우 벡엔드를 다음처럼 CAP_DSHOW로 지정해주면 기다림없이 바로 영상이 화면에 보입니다. 변경전 video_capture = cv2.VideoCapture(0) 변경후 video_capture = cv2.VideoCapture(0,cv2.CAP_DSHOW) Python 코드를 예시로 들었지만 C++에서도 유사한 방식으로 가능할겁니다. 참고 https://github.com/opencv/opencv/issues/17687
C++에서 배열(array)와 벡터(vector)의 속도를 비교해보았습니다. 테스트 환경은 Ubuntu 20.04와 Visual Studio 2019입니다. 2021. 3. 27 최초작성 아래 링크를 보고 궁금해져서 간단히 테스트를 해보았습니다. https://stackoverflow.com/questions/3664272/is-stdvector-so-much-slower-than-plain-arrays 전문적으로 관련 테스트를 진행해본 적이 없어서 정확한 방법이 아닐 수도 있는 점 감안하고 보세요. 틀린 점이나 개선점이 있으면 댓글을 남겨주세요. 시간 측정 방법은 아래 링크를 참고했습니다. https://stackoverflow.com/questions/2808398/easily-measure-elap..
shared_ptr 객체를 전달받은 함수에서 사용 후, 자원이 해제되는지 확인한 결과입니다. 아직 C++에 익숙하지 못해서 제 맘대로 바꿔보면서 감을 익히는 중입니다. 2021. 02. 15 - 최초작성 shared_ptr 객체를 생성한 후, 함수에 객체를 전달한 후, 지역 변수에 대입해주면 자동으로 shared_ptr의 객체가 자원해제 되는줄 알았습니다. 하지만 예상과 달리 Data 클래스의 소멸자가 호출되지 않았습니다. 소멸자가 호출되었다면 “delete[] buf” 메시지가 출력되야 합니다. #include #include #include class Data { public: ~Data() { if (buf != nullptr) { delete[] buf; printf("delete[] buf\n"..
Visual Studio 2019에서 MySQL/MariaDB C API를 사용하는 간단한 예제를 테스트해보았습니다. 2021. 02. 08 최초작성 아래 링크에 접속하여 MariaDB Connector/C를 다운로드합니다. Oracle에서 다운로드 받으면 로그인해야 하고 번거로워서 이곳에서 다운로드 받아 사용했습니다. https://mariadb.com/downloads/#connectors OS 항목을 MS Windows (64-bit)로 변경한 후, Download를 클릭합니다. 설치하면 아래 경로에 설치됩니다. C:\Program Files\MariaDB\MariaDB Connector C 64-bit 테스트를 위해 콘솔 프로젝트를 생성했습니다. Create a new project를 선택합니다...
INI 파일 라이브러리(Leksys' INI Parser https://github.com/Lek-sys/LeksysINI )를 사용하여 INI 파일을 생성하고 값을 읽고 쓰는 예제입니다. 깃허브에서 iniparser.hpp 파일만 가져오면 예제를 동작시킬 수 있습니다. 2021. 01. 24 최초작성 #include #include #include #include "iniparser.hpp" std::string get_current_path() { wchar_t path[MAX_PATH] = { 0 }; GetModuleFileName(NULL, path, MAX_PATH); USES_CONVERSION; std::string str = W2A(path); str = str.substr(0, str...
현재 폴더에 있는 지정한 파일의 전체 경로(절대 경로)를 얻는 예제입니다. 2021. 1. 14 최초작성 아래 링크에서 발견한 코드를 MinGW로 테스트하니 문제 없었지만. https://stackoverflow.com/a/17632322 #include #include int main() { char path[] = "get_filepath.cpp"; char *filename; char fullpath[256]; GetFullPathName(path, 256, fullpath, &filename); // linux realpath printf("Full path: %s\nFilename: %s\n", fullpath, filename); return 0; } Visual Studio 2019에서 실행..