멋진 현대 C++
최신 C++에 대한 리소스 모음입니다.
목표는 사람들이 최신 C++11 이상을 배우고 활용하는 데 도움이 되는 리소스 목록을 수집하는 것입니다.
기여
목록에 항목을 추가, 제거 또는 변경하려면 GitHub 저장소에 끌어오기 요청을 제출하세요.
서적
- C++ 둘러보기(Bjarne Stroustrup) [C++11/17/20]
- C++ 프로그래밍 언어(Bjarne Stroustrup) [C++11]
- 효과적인 최신 C++(Scott Meyers) [C++11/14]
- 새로운 C++ 개요(Scott Meyers) [C++11/14]
- C++ 핵심 지침(Bjarne Stroustrup, Herb Sutter) [C++11/14/17] - 최신 C++ 사용을 위한 지침.
- C++ 동시성 실행(Anthony Williams) [C++11/14/17] - 표준 C++를 사용한 다중 스레드 코드 작성에 대한 참조 및 가이드입니다.
- C++17 - 전체 가이드(Nicolai M. Josuttis) [C++17] - C++17의 언어 및 라이브러리 기능을 사용하는 방법에 대한 지침을 제공합니다.
- Professional CMake(Craig Scott) - CMake를 사용하여 C++ 프로젝트를 빌드하기 위한 실용적인 가이드입니다.
- 최신 C++ 자습서: C++ 11/14/17/20 On the Fly(Changkun Ou) - 이 책은 "On the Fly"라고 주장합니다. 그 목적은 최신 C++(2020년대 이전) 관련 기능에 대한 포괄적인 소개를 제공하는 것입니다.
C++ 책에 대한 포괄적인 가이드는 Stackoverflow Definitive C++ 책 가이드 및 목록을 참조하세요.
지역 사회
최신 C++ 뉴스와 업데이트를 찾아보세요:
최신 C++ 팟캐스트를 들어보세요:
- CppCast(YouTube, Twitter) - C++ 개발자를 위한 C++ 개발자의 첫 번째 팟캐스트!
- Cpp.chat(YouTube, Twitter) - C++에 대한 의견과 C++ 프로그래머가 관심을 갖는 문제에 대해 설명합니다.
- C++ Weekly - Jason Turner의 교육용 비디오.
최신 C++ 표준 제안을 읽어보세요.
C++와 관련된 모든 것에 대해 토론하십시오.
- r/cpp - C++ 하위 레딧.
- C++ Slack - C++ Slack 작업공간입니다.
- CoreHard 텔레그램 그룹.
C++ 질문을 물어보세요:
- r/cpp_questions - C++ 질문과 답변을 위한 하위 레딧입니다.
- Stackoverflow C++/C++11/C++14/C++17/C++20 - C++에 대한 Stackoverflow 질문입니다.
귀하의 질문이 이미 FAQ에 답변되어 있습니까?:
다양한 C++ 컨퍼런스 중 하나로 이동하세요.
C++ 사용자 그룹 찾기:
- 사용자 그룹의 C++ 목록을 충족합니다.
- C++ Super-FAQ의 사용자 그룹 목록입니다.
- C/C++ 모임.
- C++ Slack에서
#ug
로 시작하는 채널을 검색하세요.
회담
TODO는 C++11/17/20 기능을 사용하여 코드를 단순화하는 방법에 대한 좋은 강연 목록을 선별합니다.
SG20 교육 및 C++ 교육을 위한 권장 비디오로 시작하세요.
- CppCon Talks - C++ 컨퍼런스의 강연입니다.
- CppCon 2014: Bjarne Stroustrup "간단한 작업을 단순하게 만드세요!"
- CppCon 2014: Herb Sutter "자물쇠 없는 프로그래밍(또는 저글링 면도날), 1부"
- CppCon 2014: Herb Sutter "자물쇠 없는 프로그래밍(또는 저글링 면도날), 2부"
- CppCon 2014: Scott Meyers "유형 추론 및 관심을 갖는 이유"
- CppCon 2015: Bjarne Stroustrup "좋은 C++14 작성"
- CppCon 2015: Herb Sutter "좋은 C++14 작성... 기본적으로"
- CppCon 2016: Chandler Carruth "쓰레기 넣기, 쓰레기 버리기: 정의되지 않은 행동에 대한 논쟁..."
- CppCon 2016: Herb Sutter "C++의 누출 방지... 기본적으로."
- CppCon 2017: Jason Turner "실용적인 C++17"
- CppCon 2018: Jonathan Boccara “1시간 이내에 105개의 STL 알고리즘 개발”
- code::dive conference 2014 - Scott Meyers: CPU 캐시와 관심을 갖는 이유(슬라이드)
- code::dive conference 2015 - Andrei Alexandrescu - 빠른 코드 작성 I(슬라이드)
- code::dive conference 2015 - Andrei Alexandrescu - 빠른 코드 작성 II(슬라이드)
- C++Now Talks - C++Now 컨퍼런스의 강연입니다.
- Going Native 2012: Variadic 템플릿은 Funadic입니다.
- Going Native 2013: Stephan T Lavavej - "컴파일러를 도와주지 마세요"
- Going Native 2013: Sean Parent - "C++ 양념"
블로그
- Andrzej의 C++ 블로그 - C++에 대한 지침 및 생각.
- 앤서니 윌리엄스의 블로그
- 학계에 접목 - John Regehr, 미국 유타 대학교 컴퓨터 과학 교수.
- 에릭 니블러
- Fluent C++ - C++의 표현 코드.
- 금주의 전문가(새 게시물) - Herb Sutter가 만들고 작성한 정기적인 C++ 프로그래밍 문제 시리즈입니다.
- 금주의 Guru(이전 게시물) - 금주의 이전 Guru 게시물입니다.
- 마샬의 C++ 사색
- 폴 펄츠 2세의 블로그
- 프로그래밍에 대한 프레싱
- C++ 단순화 - 깔끔하고 유지 관리가 쉬운 C++를 작성하세요.
- Sticky Bits - 실시간 및 임베디드 시스템용 소프트웨어 개발을 살펴보는 블로그입니다.
- Sutter's Mill - 소프트웨어 개발에 관한 Herb Sutter.
- Aristeia의 견해 - Scott Meyers의 직업적 활동과 관심.
- Visual C++ 팀 블로그
- 까마귀가 책상과 같은 이유는 무엇입니까?
웹사이트
- C++ 모범 사례 - C++ 모범 사례의 공동 컬렉션입니다.
- C++ 패턴 - 최신 C++ 패턴의 저장소입니다.
- C++ 참조 - C++ 참조.
- C++ 예제 - 예제를 통해 C++를 배워보세요!
프로젝트 스타터 템플릿
- ModernCppStarter - CMake, CI, 코드 적용 범위, clang 형식, 재현 가능한 종속성 관리 등을 사용하여 최신 C++ 프로젝트를 시작하기 위한 템플릿입니다.
- modern-cpp-template - 다운스트림 포함을 지원하며 CMake, Clang-Format, CI, 단위 테스트 등을 사용하는 최신 C++ 프로젝트용 템플릿입니다.
- cmake_template - C++ 및 도구를 시작하는 데 도움이 되는 템플릿 CMake 프로젝트입니다.
- Pitchfork - Pitchfork는 C++ 프로젝트 규칙 집합입니다.
도서관
이 목록은 모든 C 및 C++ 라이브러리의 포괄적인 목록이 아닙니다. 이는 일반적인 적용 가능성(직렬화, 데이터베이스, 테스트 등)을 갖춘 고품질 최신 라이브러리 또는 새로운 C++ 기능을 참신하게 사용하는 고품질 라이브러리의 목록입니다.
주방싱크대 / 프레임워크
- abseil - Abseil은 C++ 표준 라이브러리를 보강하도록 설계된 C++ 코드(C++11 준수)의 오픈 소스 컬렉션입니다.
- Boost - C++ 라이브러리 모음입니다.
- Folly - Facebook 오픈 소스 라이브러리.
- POCO - POCO C++ 라이브러리는 데스크톱, 서버, 모바일, IoT 및 임베디드 시스템에서 실행되는 네트워크 및 인터넷 기반 애플리케이션을 구축하기 위한 강력한 크로스 플랫폼 C++ 라이브러리입니다.
- nonstd-lite - C++11 이전 환경을 위한 C++11 이후 기능으로의 마이그레이션 경로인 *-lite 리포지토리의 상위입니다.
- xtd - Windows, macOS, Linux, iOS 및 android에서 콘솔(CLI), 양식(WinForms와 같은 GUI) 및 tunit(Microsoft Unit Testing Framework와 같은 단위 테스트) 애플리케이션을 생성하는 최신 C++17/20 프레임워크입니다.
테스트
- C++에 대한 승인 테스트 - Linux, Mac 및 Windows에서 C++에 대한 기본 승인 테스트입니다.
- autocheck - C++용 QuickCheck 및 SmallCheck 클론.
- Bandit - 단위 테스트 작업을 즐거운 경험으로 만들고자 하는 C++11용 헤더 전용 프레임워크입니다.
- Boost:UT - 매크로가 필요 없는 C++20 μ(마이크로)/단위 테스트 프레임워크, 단일 헤더.
- Boost.Test - 부스트 테스트 프레임워크.
- Catch - 단위 테스트, TDD 및 BDD를 위한 최신 C++ 기반 헤더 전용 프레임워크입니다.
- clean-test - 최신 C++-20 테스트 프레임워크입니다.
- doctest - 단위 테스트 및 TDD를 위한 기능이 풍부한 가장 빠른 C++11/14/17/20 단일 헤더 테스트 프레임워크입니다.
- Fakeit - C++ 조롱이 쉬워졌습니다. 간단하면서도 매우 표현력이 뛰어난 C++ 모킹을 위한 헤더 전용 라이브러리입니다.
- Googletest - Google 테스트 및 모의 프레임워크.
- Mull - C 및 C++에 대한 실용적인 돌연변이 테스트 도구
- rapidcheck - C++용 QuickCheck 복제.
- snitch - 경량 C++20 테스트 프레임워크입니다.
벤치마킹
마이크로 벤치마크 생성을 위한 라이브러리 및 프레임워크입니다.
- Celero - C++ 벤치마크 작성 라이브러리/프레임워크.
- 구글 벤치마크? - 마이크로벤치마크 지원 라이브러리.
- hayai - C++ 벤치마킹 프레임워크.
- Nonius - C++ 마이크로 벤치마킹 프레임워크입니다. C++ 벤치마크 작성 라이브러리/프레임워크.
- nanobench - C++11/14/17/20을 위한 간단하고 빠르며 정확한 단일 헤더 마이크로벤치마킹 기능
벌채 반출
- fmtlog - 대기 시간이 나노초 단위인 fmtlib 스타일 로깅 라이브러리입니다.
- spdlog - 빠른 C++ 로깅 라이브러리.
- loguru - 가볍고 유연한 C++ 로깅 라이브러리
스레딩
- 동시 대기열 - C++11을 위한 빠른 다중 생산자, 다중 소비자 잠금 없는 동시 대기열입니다.
- Cpp-Taskflow - 최신 C++ 병렬 작업 프로그래밍 라이브러리
- Junction - C++의 동시 데이터 구조.
- MPMCQueue - C++11로 작성된 제한된 다중 생산자 다중 소비자 잠금 없는 대기열입니다.
- SPSCQueue - C++11로 작성된 제한된 단일 생산자 단일 소비자 대기 및 잠금 없는 큐입니다.
- 스레딩 빌딩 블록 - TBB(스레딩 빌딩 블록)는 멀티 코어 프로세서의 병렬 프로그래밍을 위해 Intel에서 개발한 C++ 템플릿 라이브러리입니다. TBB를 사용하면 계산이 병렬로 실행될 수 있는 작업으로 구분됩니다. 라이브러리는 이러한 작업을 실행하기 위해 스레드를 관리하고 예약합니다.
- execq - C++11에서 스레드 풀과 유사한 방식(직렬/동시)으로 작업을 실행하는 스마트 큐입니다.
- concurrencpp - 작업, 실행기, 타이머 및 C++20 코루틴을 모두 포함하는 일반 동시성 라이브러리입니다.
구문 분석 및 직렬화
- JSON? - 최신 C++용 JSON.
- jsoncpp - JSON과 상호작용하기 위한 C++ 라이브러리입니다.
- toml++ - TOML v0.5.0 이상을 구문 분석하기 위한 헤더 전용 C++17 라이브러리입니다.
- tinytoml -TOML 구문 분석을 위한 헤더 전용 C++11 라이브러리입니다.
- yaml-cpp - C++의 YAML 파서 및 이미터입니다.
- cpptoml - TOML 구성 파일을 구문 분석하기 위한 헤더 전용 라이브러리입니다.
- 시리얼 - 직렬화를 위한 C++11 라이브러리입니다.
- cista - 고성능 무복사 바이너리 직렬화를 위한 C++17 라이브러리입니다.
- simdjson - 일반적으로 사용 가능한 SIMD 지침을 사용하여 JSON 자체의 구문 분석을 가속화합니다.
- Boost.JSON - 사용자 정의 할당자를 강력하게 지원하는 JSON 라이브러리입니다.
- hjson-cpp - Hjson 및/또는 JSON 파일을 읽고 쓰기 위한 C++11 라이브러리입니다.
- json_struct - C++ 구조체와 직접 구문 분석하는 고성능 단일 헤더 JSON 파서입니다.
- daw_json_link - C++에서 빠르고 편리한 JSON 직렬화 및 구문 분석
문자열 형식화 및 템플릿
- {fmt} - 작고 안전하며 빠른 서식 지정 라이브러리입니다.
- Inja - 최신 C++용 템플릿 엔진.
- Mustache - C++11의 콧수염 텍스트 템플릿입니다.
- tinyformat.h - C++용 최소 형식 안전 printf 대체 라이브러리입니다.
- pprint - 최신 C++용 예쁜 프린터.
스크립팅
- sol2 - Lua에 대한 C++ 라이브러리 바인딩입니다.
- ChaiScript - 사용하기 쉬운 C++용 임베디드 스크립팅 언어입니다.
- pybind11 - C++11과 Python 간의 원활한 작동성.
웹/HTTP
- Beast - C++11의 Boost.Asio를 기반으로 구축된 HTTP 및 WebSocket입니다.
- cpprestsdk - C++ REST SDK는 최신 비동기 C++ API 디자인을 사용하여 네이티브 코드로 클라우드 기반 클라이언트-서버 통신을 위한 Microsoft 프로젝트입니다. 이 프로젝트의 목표는 C++ 개발자가 서비스에 연결하고 상호 작용할 수 있도록 돕는 것입니다.
- cpr - C++ 요청: Python 요청의 영적 포트인 Curl for People.
- Crow - 웹 서버 생성을 위한 빠르고 사용하기 쉬운 마이크로 프레임워크(Python Flask에서 영감을 얻음)
- dmbcs-micro-server - HTTP를 통한 C++20 기반 JSON, HTML, 텍스트 및 PNG. 웹 기반 UI를 제공하기 위해 애플리케이션에 서버를 삽입하는 간단한 방법입니다.
- Drogon - C++14/17 기반의 고성능 HTTP 애플리케이션 프레임워크
- oat++ - 고성능 웹 프레임워크(C++11, 종속성 없음).
- pistache - 우아한 C++ REST 프레임워크입니다.
- Restbed - Restbed 프레임워크는 C++11 애플리케이션에 비동기 RESTful 기능을 제공합니다.
데이터 베이스
- mongo-cxx-driver - MongoDB용 C++ 드라이버입니다.
- redox - Redis용 최신 비동기식 고속 C++11 클라이언트입니다.
- sqlite_orm - C++14용 강력한 헤더 전용 SQLite3 ORM 라이브러리입니다.
- sqlite3pp - SQLite3 API의 C++ 래퍼입니다.
- sqlpp11 - C++용 유형 안전 SQL 템플릿 라이브러리입니다.
- libpqxx - PostgreSQL용 공식 C++ 클라이언트 API입니다.
- TinyORM - 최신 C++ ORM 라이브러리.
바이오C++
- SeqAn - 시퀀스 분석을 위한 최신 C++ 라이브러리(C++17, C++20).
기타
- ASAP - 날짜를 구문 분석, 표시, 작동 및 반복하는 헤더 전용 라이브러리입니다.
- BigIntegerCPP - 효과적인 고성능을 제공하고 본질적으로 단순하며 보기에도 깔끔한 C++11 대형 정수 라이브러리입니다.
- CAF - C++에서 행위자 모델의 오픈 소스 구현입니다.
- Cinder - Cinder는 C++에서 전문가 수준의 창의적 코딩을 위한 무료 오픈 소스 라이브러리입니다.
- Conduit - 코루틴 TS 기반 고성능 스트림.
- cpitertools - C++14용 itertools(python) 구현
- cxxopts - 경량 C++ 명령줄 옵션 구문 분석기.
- 날짜 - C++11/14/17 헤더를 기반으로 하는 날짜 및 시간 라이브러리입니다.
- docopt.cpp - docopt는 아름다운 명령줄 인터페이스를 만듭니다.
- EnTT - 최신 C++를 위한 헤더 전용의 빠르고 안정적인 ECS(엔티티 구성 요소 시스템)입니다.
- Font Chef - 글꼴을 요리하고 텍스트를 렌더링하는 C99 및 C++14 라이브러리
- HashLibPlus - 문자열, 파일, 스트림, 바이트 배열 및 형식화되지 않은 데이터의 해시 및 체크섬을 계산하기 위한 사용하기 쉬운 인터페이스를 제공하는 C++11 라이브러리입니다. 또한 증분 해싱도 지원합니다.
- IntX - O(N * log N) 곱셈/나눗셈 알고리즘 구현 속도를 갖춘 IntX 임의 정밀도 정수 라이브러리의 C++11 포트입니다.
- iod - C++14용 메타 프로그래밍 유틸리티입니다.
- Magic Enum - 최신 C++의 열거형(문자열에서, 문자열에서, 반복)에 대한 정적 반사로, 매크로나 상용구 코드 없이 모든 열거형 유형으로 작업할 수 있습니다.
- Wise Enum - Magic Enum과 유사하지만 C++ 11/14/17에서 작동하는 열거형에 대한 정적 반사입니다.
- Nameof - 헤더 전용 C++17 라이브러리는 변수, 유형, 함수, 매크로 및 열거형의 간단한 이름을 얻기 위해 매크로 및 함수의 이름을 제공합니다.
- PEGTL - 표현식 문법 템플릿 라이브러리 구문 분석(C++11, 헤더 전용).
- 무작위 - 최신 C++에 대한 간단하고 편리한 헤더 전용 Random입니다.
- rang - 터미널의 색상을 위한 간단하고 현대적인 헤더 전용 C++11 라이브러리입니다.
- range-v3 - C++11/14/17용 실험적 범위 라이브러리입니다.
- SimpleBaseLib4CPP - 현재 Base16, Base32(다양한 변형), Base58(다양한 변형), Base64(다양한 변형)와 같은 다양한 베이스의 인코딩 및 디코딩을 지원하는 간단한 C++11 베이스 인코딩 라이브러리입니다. [MIT]
- simple_match - C++14에 대한 간단한 헤더 전용 패턴 일치입니다.
- SRL-CPP - C++11로 작성된 단순 정규식 언어 빌더 라이브러리로, 단순하고 복잡한 정규 표현식을 구성하기 위한 사용하기 쉬운 인터페이스를 제공합니다. [MIT]
- tweeny - 30개 이상의 여유 기능이 포함된 헤더 전용 보간 라이브러리입니다.
- Vireo - 트위터가 제공하는 가볍고 다양한 비디오 처리 라이브러리입니다.
- 표시기 - 최신 C++용 활동 표시기.
- AssociatedEnum - 연관된 값이 있는 열거형을 위한 C++용 헤더 전용 라이브러리입니다.
- openFrameworks - 창의적인 코딩을 위한 오픈 소스 C++ 툴킷입니다.
- tabulate - 최신 C++용 테이블 작성기입니다.
도구
기타
- clang 형식 ? - C++ 코드 형식을 지정하는 도구입니다.
- clangd - C++ 코드를 이해하고 편집기에 코드 완성, 컴파일 오류, 정의로 이동 등의 스마트 기능을 추가합니다.
- 컴파일러 탐색기 - C++ 코드의 어셈블리 출력을 대화형으로 탐색합니다.
- cquery - libclang으로 구동되는 수백만 줄의 코드 베이스를 지원하는 C/C++ 언어 서버입니다. Emacs, Vim, VSCode 및 기타 언어 서버 프로토콜을 지원합니다. 상호 참조, 완성, 진단, 의미 강조 등(2018년 11월 27일 이후 커밋이 더 이상 없음)
- ccls - 상호 참조, 계층 구조, 완성 및 의미 강조 표시를 지원하는 C/C++/ObjC 언어 서버(현재 개발 중인 cquery에서 분기됨)
- irony-mode - libclang으로 구동되는 Emacs용 AC/C++ 부 모드입니다.
- modern-cpp-font-lock-mode - emacs를 사용한 Modern C++에 대한 구문 강조 지원
동적 분석
- 소독제? - 이 프로젝트는 AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer 등의 Sanitizer를 위한 본거지입니다.
- Valgrind - 동적 분석 도구를 구축하기 위한 계측 프레임워크입니다. 많은 메모리 관리 및 스레딩 버그를 자동으로 감지하고 프로그램을 자세히 프로파일링할 수 있는 Valgrind 도구가 있습니다. Valgrind를 사용하여 새로운 도구를 만들 수도 있습니다.
정적 분석
- cppcheck - C/C++ 코드에 대한 정적 분석 도구입니다. 버그를 탐지하기 위한 고유한 코드 분석을 제공하고 정의되지 않은 동작과 위험한 코딩 구성을 탐지하는 데 중점을 둡니다.
- 꽝-깔끔하게? - clang 기반 C++ “linter” 도구입니다. 그 목적은 스타일 위반, 인터페이스 오용 또는 정적 분석을 통해 추론할 수 있는 버그와 같은 일반적인 프로그래밍 오류를 진단하고 수정하기 위한 확장 가능한 프레임워크를 제공하는 것입니다. clang-tidy는 모듈식이며 새로운 수표를 작성하기 위한 편리한 인터페이스를 제공합니다.
- clang-analyzer - C, C++ 및 Objective-C 프로그램에서 버그를 찾는 소스 코드 분석 도구입니다. 기호 실행 기법을 기반으로 경로 감지, 절차 간 분석을 구현합니다.
퍼징
- American fuzzy lop - American fuzzy lop은 보안 지향적인 퍼저입니다.
- hongfuzz - 흥미로운 분석 옵션을 갖춘 보안 지향적이고 피드백 중심이며 진화적이고 사용하기 쉬운 fuzzer입니다.
- libFuzzer - Coverage-guided Fuzz 테스트를 위한 라이브러리입니다.
시스템 구축
- Bazel - 빠르고 확장 가능한 다국어 빌드 시스템입니다.
- build2 - C 및 C++ 코드를 개발하고 패키징하기 위한 크로스 플랫폼 빌드 도구 체인입니다.
- 씨메이크? - 소프트웨어를 구축, 테스트 및 패키징하도록 설계된 크로스 플랫폼 도구 제품군입니다.
- Meson - 매우 빠르고, 더욱 중요하게는 최대한 사용자 친화적인 오픈 소스 빌드 시스템입니다.
- XMake - Lua를 기반으로 하는 크로스 플랫폼 빌드 유틸리티입니다.
패키지 관리
- Buckaroo - C++ 및 친구들을 위한 완전 분산형 다중 언어 패키지 관리자
- cget - CMake 패키지 검색.
- conan - C/C++ 패키지 관리자.
- CPM - 설정이 필요 없는 크로스 플랫폼 종속성 관리를 위한 CMake 스크립트입니다.
- Hunter - C++용 크로스 플랫폼 패키지 관리자입니다.
- vcpkg - Windows, Linux 및 MacOS용 C++ 라이브러리 관리자
- xrepo - Xmake를 기반으로 하는 크로스 플랫폼 C/C++ 패키지 관리자입니다.
에 대한
이 목록은 C++ 커뮤니티의 도움을 받아 Erik Rigtorp 가 편집했습니다.
- rigtorp.se
- [email protected]
- github.com/rigtorp
- twitter.com/rigtorp
- linkedin.com/in/rigtorp