C++ 외부 라이브러리 사용, 프로젝트 템플릿
·
C++/TBC++
외부 라이브러리 사용, 프로젝트 템플릿 git clone git clone --recursive 명령어를 통해, 깃허브 내부적으로 링크된 레포지토리들까지 전부 받아올 수 있다. CMake Makefile을 좀 더 추상화하여 직관적으로 빌드할 수 있다. 소스 코드 폴더 내에 CMakeLists.txt이 Makefile과 같은 역할을 한다. 참고 : https://www.tuwlab.com/ece/27234 nanoGUI 예시 링크 : https://github.com/wjakob/nanogui git clone으로 소스 코드를 받아서, CMake로 빌드하고나면 솔루션 파일이 생긴다. 해당 솔루션 파일을 열면 예제들을 실행시켜 볼 수 있다. 다른 프로젝트에서 라이브러리를 사용하려면 따로 설정을 해야한다. 예..
C++ TCP/IP 네트워킹 (TCP/IP Networking)
·
C++/TBC++
TCP/IP 네트워킹 (TCP/IP Networking) boost/asio 라이브러리를 이용하여 통신을 할 수 있다. 예제 원래 서버 프로그램 하나, 클라이언트 프로그램 하나 이렇게 두 개의 파일을 만드는게 정석이지만, 한번에 보기 편하도록 프로그램 하나로 작성했다. 로컬호스트의 13번 포트를 사용하는 예제이다. #include #include #include #include #include using boost::asio::ip::tcp; void virtual_server() { try { boost::asio::io_service io_service; tcp::endpoint endpoint(tcp::v4(), 13); tcp::acceptor acceptor(io_service, endpoint..
따라하며 배우는 C++ 20장
·
C++/TBC++
따라하며 배우는 C++ 20장 비주얼 스튜디오 프로파일링 (Visual Studio Profiling) vcpkg TCP/IP 네트워킹 (TCP/IP Networking) 외부 라이브러리 사용, 프로젝트 템플릿 따라하며 배우는 C++
C++ 멀티쓰레딩 예제 (벡터 내적)
·
C++/TBC++
멀티쓰레딩 예제 (벡터 내적) 병렬로 처리할 때, 정확한 계산을 위해 레이스 컨디션을 고려해주는 것은 필수이다. mutex, atomic, future 등을 사용할 수 있다. 시간적인 요소 또한 중요하므로, 쓰레드의 개수 등을 조절하여 최적화를 해야 한다. 코드 Release모드, x64 환경에서 컴파일해야 빠르다. Debug모드는 기다리다가 속터져서 죽는다. #include #include #include #include #include #include #include #include #include #include std::mutex mtx; auto dotProductFuture(const std::vector& v0, const std::vector& v1, \ const unsigned i_st..
따라하며 배우는 C++ 19장
·
C++/TBC++
따라하며 배우는 C++ 19장 람다 함수 (Lambda Function) 함수에서 여러 개의 리턴 값 반환(C++17) 멀티쓰레딩 (Multithreading) 경쟁 상태 (Race Condition) 작업 기반 비동기 프로그래밍 (Task-based Parallelism) 멀티쓰레딩 예제 (벡터 내적) 완벽한 전달 (Perfect Forwarding) 자료형 추론 (auto, decltype) 따라하며 배우는 C++
따라하며 배우는 C++ 18장
·
C++/TBC++
따라하며 배우는 C++ 18장 istream ostream sstream 흐름 상태 (Stream States) 정규 표현식 (Regular Expressions) 파일 입출력 파일 임의 위치 접근 따라하며 배우는 C++
따라하며 배우는 C++ 17장
·
C++/TBC++
따라하며 배우는 C++ 17장 string sstream 따라하며 배우는 C++
따라하며 배우는 C++ 16장
·
C++/TBC++
따라하며 배우는 C++ 16장 표준 템플릿 라이브러리 (Standard Template Libraries) 따라하며 배우는 C++
C++ 따라하며 배우는 C++ 15장
·
C++/TBC++
따라하며 배우는 C++ 15장 스마트 포인터 (Smart Pointer) R-value Reference 이동 생성자와 이동 대입 std::move unique_ptr shared_ptr 순환 의존성 문제 (Circular Dependency Issues) 따라하며 배우는 C++
C++ 따라하며 배우는 C++ 14장
·
C++/TBC++
따라하며 배우는 C++ 14장 예외 처리 (Exception Handling) 따라하며 배우는 C++
따라하며 배우는 C++ 13장
·
C++/TBC++
따라하며 배우는 C++ 13장 템플릿 (Templates) 참고 따라하며 배우는 C++
따라하며 배우는 C++ 12장
·
C++/TBC++
따라하며 배우는 C++ 12장 다형성 (Polymorphism) 참고 따라하며 배우는 C++
따라하며 배우는 C++ 11장
·
C++/TBC++
따라하며 배우는 C++ 11장 상속 (Inheritance) 참고 따라하며 배우는 C++
따라하며 배우는 C++ 10장
·
C++/TBC++
따라하며 배우는 C++ 10장 객체들의 관계 (Object Relationship) IntArray 컨테이너 만들어보기 참고 따라하며 배우는 C++
C++ 따라하며 배우는 C++ 9장
·
C++/TBC++
따라하며 배우는 C++ 9장 오버로딩 (Overloading) 복사 생성자 (Copy Constructor) 변환 생성자 (Converting Constructor) delete 얕은 복사 (Shallow Copy) 깊은 복사 (Deep Copy) 이니셜라이저 리스트 (Initializer List) 참고 따라하며 배우는 C++
따라하며 배우는 C++ 8장
·
C++/TBC++
따라하며 배우는 C++ 8장 Class 참고 따라하며 배우는 C++
따라하며 배우는 C++ 7장
·
C++/TBC++
따라하며 배우는 C++ 7장 Call by Reference std::tuple 인라인 함수 (Inline Function) 함수 포인터 (Function Pointer) std::vector assert 참고 따라하며 배우는 C++
따라하며 배우는 C++ 6장
·
C++/TBC++
배열 (Array) nullptr_t 문자열 (string) Stack Size 레퍼런스 (Reference, 참조) float vs double const 값 변경 참고 따라하며 배우는 C++
따라하며 배우는 C++ 5장
·
C++/TBC++
제어 흐름 (Control Flow) switch 반복문 (Loop) 난수 생성 (Random Number Generation) cin 참고 따라하며 배우는 C++
따라하며 배우는 C++ 4장
·
C++/TBC++
extern 메모리 절약 팁 (extern) using auto 데이터 타입 확인 형 변환(Type Conversion) 입력 버퍼 무시하기 열거형 (Enumerate Type) Type Alias 참고 따라하며 배우는 C++
따라하며 배우는 C++ 3장
·
C++/TBC++
연산자 산술 연산자 (Arithmetic Operator) 쉼표 연산자 (Comma Operator) 비트 연산자 (Bitwise Operator) 범위 지정 연산자 (Scope Resolution Operator) 참고 따라하며 배우는 C++
따라하며 배우는 C++ 2장
·
C++/TBC++
변수 선언 시점 예전 c컴파일러의 경우 모든 변수 선언은 코드의 맨 위에 있었어야 했다. 메모리를 미리 다 잡아놓고 사용하는 방식이다. 요즘은 변수 사용 직전에 선언하는걸 선호한다고 한다. 디버깅, 리팩토링에 용이하다. 자료형 (Data Type) 소수점 (Decimal Point) Boolean 형변환 (Type Conversion) 출력 버퍼 비우기 (fflush) 상수 (Contant) 참고 따라하며 배우는 C++
따라하며 배우는 C++ 1장
·
C++/TBC++
언어 컴파일러 언어 코드를 컴파일하여 실행파일을 생성하고 실행시킨다. 인터프리터 언어 실행파일 없이 바로 실행시킨다. 상대적으로 느리다. 실행파일을 만들고 반복해서 사용하는게 더 빠르다. 주석 당연한건 적지 말자 초기화 (Initialization) 헤더 가드 (Header Guard) namespace 전처리기 (PreProcessor) 참고 따라하며 배우는 C++