C++に関するリンク集

情報

C/C++ Users Group
歴史あるコミュニティ。
C FAQ 日本語訳
浮動小数点に関する項目は一読しておくと役に立つかも。
Cprogramming.com
Cprogramming.com is a web site designed to help you learn the C or C++ programming languages, and provide you with C and C++ programming language resources.
Pete Isensee氏のHP
最適化やSTL関連情報。ASIN:1584500492 シリーズに多数執筆されているお方らしい。
C++ FAQ LITE
This document, C++ FAQ Lite, is not the same as the C++ FAQ Book. The book (C++ FAQ, Second Edition, Cline, Lomow, and Girou, Addison-Wesley) is 500% larger than this document, and is available in bookstores.
Incompatibilities Between ISO C and ISO C++
C99とC++98
Wikibooks > More C++ Idioms / 英語版 <GFDL>
対象とする読者:C++ と関連するパラダイムについてほどほどのレベルの知識を持つ人誰でも
株式会社きじねこ > C/C++迷信集
ISO-IEC JTC1-SC22-WG14 - C > TR 24731: Safer C library functions
ご安全に!
ISO/IEC 14882:1998
C++98
ISO/IEC 14882:2003
C++03
INCITS/ISO/IEC 14882:2012, ISO/IEC 14882:2011
C++11
  • リファレンス
C/C++ Reference
C言語・C++のリファレンス。STLのコンテナのリファレンスとしても便利。
C/C++ リファレンス - 日本語バージョン。ページの上の方にCHM形式版もあり。
C++ Library Reference
The standard C++ library is a collection of functions, constants, classes and objects that extends the C++ language providing basic functionality to interact with the operating system and some standard classes, objects and algorithms that may be commonly needed.
cpprefjp
本サイトcpprefjpは、プログラミング言語C++のリファレンスを提供するWebサイトです。
C++11の文法と機能 <GFDL>
ついに公開されました。
  • 関連ページ
Microsoft VisualC++
link集/GUI/C++

Develop

Compiler

apache.org C++0x Compiler Support
各種C++コンパイラのC++11対応状況まとめ。
Microsoft VisualC++
C++0x Core Language Features In VC10(VisualC++ 2008/2010)
C++11 Features in Visual C++ 11(VisualC++ 2010/2012)
C++11/14 Core Language Features in VS 2013 and the Nov 2013 CTP
C++11/14 Feature Tables For Visual Studio 14 CTP1
C++11/14/17 Features In VS 2015 RC
GCC(the GNU Compiler Collection) <GPL>
C++0x/C++11 Support in GCC
C++1y/C++14 Support in GCC
clang <BSD>
The goal of the Clang project is to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler
C++98, C++11, and C++14 Support in Clang
Open64 <GPL>
Open64 has been well-recognized as an industrial-strength production compiler. It is the final result of research contributions from a number of compiler groups around the world. Formerly known as Pro64, Open64 was initially created by SGI from SGI's MIPSPro compiler, and licensed under the GNU Public License (GPL v2).

API(Application Program Interface)

link集/開発言語系/C++/API
Microsoft VisualC++#API

Technique

Wikipedia > テンプレートメタプログラミング
  • 2進定数
flipcode > C++ Compile-Time Binary Constants
klx C++ Libraries
With Unz > C/C++ Programming
浮動小数点演算に関する情報もあり。

Fast Code

特に明記が無ければ、x86アーキテクチャ向け

SSEPlus <Apache License V2.0>
SSEPlus is a SIMD function library. It provides optimized emulation for newer SSE instructions. It also provides a rich set of high performance routines for common operations such as arithmetic, bitwise logic, and data packing and unpacking.
関数一覧
The Aggregate Magic Algorithms
There are lots of people and places that create and collect algorithms of all types.
光成滋生@サイボウズ・ラボ(会社, 個人) > fast strlen and memchr by SSE2
strlen()とmemchr()のSIMD版を作ってみました
MUSIC-DSP SOURCE CODE ARCHIVE
x86向けのコードがたくさんあります。
  • 平方根
NVIDIA - Fast Math Routines
FloatToInt(), fastsqrt()等高速に演算する関数の紹介。
K's Net for PlayStation's Programming > お役立ち?
高速sqrt()関数に関する情報等。
√Square Roots
MMX, VC++
  • 浮動小数変数のキャスト
Known your FPU:Fixing Floating Fast
2006年に書かれている。
  • memcpy
memcpy(), a fast and portable implementation
C++全般
{ allegro.cc } > forums
fast memcpy
C++全般
fastest bliting method
MMX, GCC/VC++
XELF's Computer Entertainment Craftsite > Fast Memory Copy / 高速なメモリ複製 / 旧サイト
MMX/SSE, VC++
stereopsis > Fast P3 Memory Access
MMX, VC++
NeL(Nevrax Library) > fast_mem.cpp
SSE, VC++
flipcode > fastmemcpy
SSE2, Intel C++ Compiler/GCC/VC++.NET
transcode > memcpy for 3dnow
3DNow!, GCC
AMD > memcpy_amd.zip
MMX, VC++.NET/MASM, AMD純正のコード。
gamedev.net > Speeding up memcpy <GPL>
MMX/SSE/AMD64, NASM
The CodeProject > Using SSE/SSE2 for optimization
SSE/SSE2, VC++.NET

Tutorial

ロベールの部屋
C++講座等。blog

SampleSourceCode

  • 国内
NAKAMURA Minoru's Home Page > プログラミング全般
スタックオーバーフローのハンドリング等。
「オペレーティングシステム」小サンプルプログラム集
Windows/Unix環境における、スレッド/排他制御/プロセス/計時/例外処理/保護違反例外処理/ファイルマッピング/ソケットのシンプル且つ簡潔なサンプル。
  • 海外
GC GreatCode <Public Domain>
GC is a well known C/C++ source code beautifier that is now fully open source. I have no time to maintain the source code, so if you want to contribute to GC, ask me, I'll put you in the GC developer list, so you can access CVS.

Tips/FAQ

wchar_t型の定義
どうやらOS毎に違う模様。
OSコンパイラ/ライブラリ定義定義場所
WindowsVisualC++ 6.0 SP6unsigned shortstdlib.h 他多数
WindowsPlatform SDK
- 2003年2月版
- Windows Server 2003 SP1
unsigned shortBaseType.h
Dbt.h
RpcNdr.h
strsafe.h
WindowsVisualC++ .NET 2003unsigned shortstdlib.h 他多数
IRIXMIPSproint/usr/include/curses.h
Cygwingcc 3.4.4__WCHAR_TYPE__/usr/src/gcc-3.3.1-3/gcc/ginclude/stddef.h
sizeof( wchar_t ) = 2 だった
C言語コンパイラでC++スタイルのコメント「//」
MIPSpro Cコンパイラ(cc)/VisualC++ではコメントとして扱われビルドが通る。
C/C++のリテラル定数
C/C++において、数値にアルファベットを組み合わせる事でデータ型を示す。大文字・小文字の区別はないが大文字に揃えた方が見易いと思う。
使用例)「1000L」「134000UL」「0.12345F」
文字
なし(整数)int
なし(実数)double
Uunsigned int
Llong
ULunsigned long
Ffloat
I64*1__int64
UI64*2unsigned __int64
LLlong long
ULLunsigned long long
アセンブラのコードを書かないでMMX/SSE/SSE2/SSE3を利用したい
Intel C++ Complierの下記intrinsicsヘッダをインクルードする事で、ベクトル組み込み関数が利用可能になる。VC++6.0 with ProcessorPack, VC++.NETやGCCにも組み込まれている。
#include <mmintrin.h>	// for MMX(Multi Media eXtension)
#include <xmmintrin.h>	// for SSE(Streaming SIMD Extensions)
#include <emmintrin.h>	// for SSE2
#include <pmmintrin.h>	// for SSE3
#include <tmmintrin.h>	// for SSE4
#include <smmintrin.h>	// for SSE4.1
#include <nmmintrin.h>	// for SSE4.2
#include <ammintrin.h>	// for SSE5(AMD only)
#include <wmmintrin.h>	// for AES-NI(Advanced Encryption Standard - New Instructions)
#include <immintrin.h>	// for AVX(Intel Advanced Vector eXtentions)
#include <ymmintrin.h>	// for AVX2(Intel Advanced Vector eXtentions 2)
SSEPlusを利用すれば、VC++でSSE3以降も利用可能かも。

DEFINE MACROs

Microsoft > MSDN Library > C/C++ Preprocessor Reference > Predefined Macros
redstrange Wiki > 定義済みマクロ
  • Architecture
    定義判定用途
    __i386__defineIA32環境判定
    __ia64defineIA64環境判定
    __x86_64definex86_64環境判定
    __amd64defineAMD64環境判定
  • Platform
    定義判定用途
    __sgidefineSGI環境判定
    sgidefineSGI環境判定
    __sundefineSun環境判定
    __APPLE__defineApple Mac環境判定
    __DARWIN__defineDarwin環境判定
    __MINGW32__defineMinGW環境判定
    __CYGWIN__defineCygwin環境判定
    __gnu_linux__defineLinux環境判定
    __FreeBSD__defineFreeBSD環境判定
    __NetBSD__defineNetBSD環境判定
    __hpuxdefineHP-UX環境判定
    WIN32defineWin32環境判定
    WINVERvalueWindowsのバージョン
    _WIN32_WINDOWSvalueWindows9x系列のバージョン
    _WIN32_WINNTvalueWindowsNT系列のバージョン
    _WIN32_IEvalueInternetExplorerのバージョン
  • Compiler
    定義判定用途
    __cplusplusdefineC++コンパイラ判定
    __GNUC__valueGNU Compiler CollectionのMajorバージョン
    __GNUC_MINOR__valueGNU Compiler CollectionのMinorバージョン
    __GNUG__defineGNU C++コンパイラ判定
    __BORLANDC__valueBorland C++Builderコンパイラ判定
    __BCPLUSPLUS__valueBorland C++Builderコンパイラ判定
    __TURBOC__valueBorland C++Builderコンパイラ判定
    __TCPLUSPLUS__valueBorland C++Builderコンパイラ判定
    __ICLvalueIntel C++ Compiler判定
    _MSC_VERvalueVisualC++コンパイラのバージョン
    _MSC_FULL_VERvalueVisualC++コンパイラの詳細なバージョン
  • Compiler定義済み
    定義判定用途
    __FILE__value定義位置のソースコードのファイル名
    __LINE__value定義位置のソースコードの行番号
    __FUNCTION__value定義位置の関数名称(C99に準拠したコンパイラが必要)
    __PRETTY_FUNCTION__value定義位置の関数の定義情報。GCCのみ。
    __func__value定義位置の関数名称。GCCのみ。
    __FUNC__value定義位置の関数名称。Borland C++Builderのみ。
    __DATE__valueコンパイル時の日付
    __TIME__valueコンパイル時の時刻
    __VA_ARGS__value可変長引数
  • Library, etc...
    定義判定用途
    _MFC_VERvalueMFC(Microsoft Foundation Class)のバージョン
    _ATL_VERvalueATL(Active Template Library)のバージョン
    _WTL_VERvalueWTL(Windows Template Library)のバージョン
    _STLPORT_VERSIONvalueSTLportのバージョン
    _RWSTD_VERvalueSTDCXXのバージョン
    _RWSTD_VER_STRvalueSTDCXXのバージョン
    BOOST_VERSIONvalueboostのバージョン
    BOOST_LIB_VERSIONvalueboostのバージョン
    _DEBUGdefineVisualC++のDebug版
    NDEBUGdefineVisualC++のRelease版
    _UNICODEdefineVisualC++のUnicode環境
    UNICODEdefineVisualC++のUnicode環境
    STRICTdefineVisualC++で厳密な型チェックを使用
    WIN32_LEAN_AND_MEANdefineVisualC++で利用頻度の少ないAPI定義を取り込まない
    VC_EXTRALEANdefineVisualC++で利用頻度の少ないAPI定義を取り込まない

TroubleShoot

templateなクラスの中でSTLのiteratorがビルドエラー
(修正前)
template< typename T >
class CTest
{
  typedef std::vector< T >::iterator HOGE_ITER;
};
(修正後)
template< typename T >
class CTest
{
  typedef typename std::vector< T >::iterator HOGE_ITER;
};
データ型の前に「typename」を付けてやると解決。

Library

link集/ライブラリ系/C++
下記以外のものはこちらのページを参照方。

規格

<stdint.h> for Visual C++
Visual C++ 7.1/8.0で使用可能な<stdint.h>です。C++用として、std::tr1名前空間を用いた<cstdint>も同梱しています。
<inttypes.h> for Visual C++
C99で導入された標準ヘッダ <inttypes.h> を Visual C++ で使えるようにするためのものです。C++でも、TR1 で <cinttypes> として導入されています。

STL(Standard Template Library)

SGI - Standard Template Library Programmer's Guide
STLport / http://sf.net/projects/stlport
SGIのSTLベース。本Wiki管理者によるいい加減なビルド方法はこちら
autoexp.dat - VisualStudio 2005以降のウォッチウィンドウ表示用
STDCXX - Apache C++ Standard Library <Apache License V2.0>
The stdcxx project (pronounced "standard C++ library", not S-T-D-C-X-X) is a collection of algorithms, containers, iterators, and other fundamental components of every piece of software, implemented as C++ classes, templates, and functions essential for writing C++ programs.
RogueWave Software. Inc.のSourcePro® Coreがベースになっている模様。
User's Guide
Synesis Software > STLsoft / http://sf.net/projects/stlsoft <BSD>
Robust, Lightweight, Cross-platform Template Software
STL for eMbedded Visual C++ - Windows CE
I have prepared an STL adaptation for eMbedded Visual C++. It is designed to work with Windows CE devices, such as H/PCs, Palm-sized PCs and Pocket PCs, and it is based on SGI's STL (3.3). An earlier version is still available, targeting Windows CE 2.0 / 2.01 and Visual C++ 5 (no test was done under Visual C++ 6).
  • Container Initialization
InitUtil - An STL Container Initialization Library
An STL Container Initialization Library
The Code Project > Pretty Good Initialization Library
STLのコンテナへの要素の追加を便利にしようという試み。
Boost Assignment Library <Boost Software License>
The purpose of this library is to make it easy to fill containers with data by overloading operator,() and operator()().then copied into a container:
  • Memory Allocator
allocator <LGPL>
A Pooled, Shared Memory allocator for the C++ Standard Template Library(STL). Allows processes to share an STL container class to facilitate control and communications between the connected processes.
ShmAllocator <GPL>
The ShmAllocator project is an implementation of a STL shared memory allocator. It uses the SystemV IPC interface for shared memory blocks and locks(semaphores), and therefore should work on any OS that supports that interface.
STLshm <LGPL>
STLshm provides an C++ STL Allocator implementation for creating and using STL containers (and any other allocator aware types) in shared memory regions. It supports multiple shared region implementations.
  • Library
flecxx <BSD>
flecxx is a simple, efficient, 100% header-only, C++ library that enhances standard and popular third-party libraries by eliminating abstraction dissonance.
  • Tool
STLFilt
分かりづらいSTLのエラーメッセージを整形するフィルタ。
GDB STL Utilities
There's a wonderful tool by Gilad Mishne for debugging STL code with GDB.
ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き > gdbでSTLのコンテナの値を表示する方法
上記のツールを利用しない古いやり方。
  • 参考情報
MSDN > Standard Template Library Samples
The following samples demonstrate the use of the Standard Template Library, a subset of the Standard C++ Library.
Dinkumware Ltd. > Fixes for Library Bugs in VC++ V5.0/V6.0
The following bug fixes correct problems in the Standard C++ Library that accompanies Microsoft Visual C++ V5.0 and V6.0.
επιστημη(えぴすてーめー)氏のHP
別館の方にC++に関する情報がまとまっています。
角 正史のページ
C++の基本的な部分の解説もある。
KAB-studio > Codian
トップページは仕事中に見るとアレゲだが、STLに関する情報は多彩。特に書籍ではあまり触れられていないiostreamに関する情報等。
Thread-safety for SGI STL
  • 関連書籍
STL標準講座―標準テンプレートライブラリを利用したC++プログラミング (Programmer’s SELECTION)
¥ 4,104円。サンプル沢山。
STL―標準テンプレートライブラリによるC++プログラミング 第2版
円。
Effective STL―STLを効果的に使いこなす50の鉄則
円。vectorが確保しているワークメモリの解放方法等。
正誤表
ASIN:487311196X
円。全てのC++標準ヘッダに関する説明あり。
ASIN:4894712458
円。各種コンテナの利用状況別ベンチマークやinline関数に関する説明あり。
ASIN:477412401X
円。関数オブジェクトの具体的な利用方法及びサンプルが掲載されている。
Extended STL, Volume 1: Collections and Iterators
¥ 6,639円。サポートページ, サポートページ

Boost

Boost / http://sf.net/projects/boost <Boost Software License>
C++の準標準ライブラリ。
sf.net > boost
sf.net > boost-binaries
Boost 翻訳プロジェクト 公開ページ
BoostPro Binary Installer for Visual C++
For users of Visual C++ 7.1 (Visual Studio 2003), 8.0 (Visual Studio 2005), and 9.0 (Visual Studio 2008) - all with the latest service packs - we offer an installer that will place source, documentation, and compiled 32-bit library binaries on your system.
The unofficial BCB Boost patches
A set of patches for official Boost library releases to provide support for the latest compiler from Borland
Boostドキュメント日本語化プロジェクト
boostjp
日本語のboost情報の総本山。
  • 関連情報
Let's Boost
Boost C++ Libraries の紹介サイトです。
Entangled Space > boost info
ここに置いてあるようなコードはコード片ですのでご自由にご使用下さい。
とらいきゃっち・ふぁいなりー
このページには、xyzzy lispとかC++についてのコンテンツがあります。
p_stade;
Boost関連の話題が多いBlog。
  • Tool/Library
Hamigaki C++ Libraries
BoostベースのC++ライブラリ集です。現在はサウンドプログラミングがメインですが、便利なものはどんどん追加していきます。作者の方のBlog
CodeProject > Pretty Good Initialization Library
Are you tired of filling data manually into STL containers? With the Initialization Library it gets a lot easier.
Boost CVPR(Computer Vision and Pattern Recognition)
Boost Computer Vision and Pattern Recognition Library
  • 関連書籍(和書)
Boost C++ Librariesプログラミング第2版
円。サポートページ
Boost C++ Library プログラミング - サポートページ
Boost C++をチューンアップする最先端ライブラリ
円。サポートページ
  • 関連書籍(洋書)
Boost Graph Library, The: User Guide and Reference Manual (C++ in-Depth Series)
¥ 5,409円。
Beyond the C++ Standard Library: An Introduction to Boost
¥ 7,542円。
ASIN:0982219199
円。
The Boost C++ Libraries - 旧版は<CC BY-NC-ND 3.0>ライセンスで公開中

Tool

MCPP -- a portable C preprocessor / http://sf.net/projects/mcpp
MCPP は次のような C/C++ プリプロセッサです。
  • C90, C99, C++98 のすべてに対応している。
  • C/C++ プリプロセッサの詳細で網羅的なテストをする検証セットが付属している。これを適用すると、MCPP は多くのプリプロセッサの中で抜群の成績を示す。
  • 診断メッセージが豊富で的確である。潜在的なバグや portability の欠如など、ソースのプリプロセス上の問題点をほぼすべてチェックすることができる。
  • デバッグ情報を出力する各種の #pragma ディレクティブを持っている。
  • Portable である。GCC, Visual C++ 等、UNIX 系・DOS/Windows 系の多くの処理系に対応している。
  • ソースからは各種の仕様のプリプロセッサを生成することができる。
  • Free software である。
  • 日本語版と英語版の詳細なドキュメントが付属している。
objprelink
Tools for speeding up the dynamic linking of large C++ libraries by manipulating the object code produced by g++ in order to reduce the number of relocations.
Intel® Threading Building Blocks <GPL>
Intel® Threading Building Blocks (TBB) offers a rich and complete approach to expressing parallelism in a C++ program. It is a library that helps you leverage multi-core processor performance without having to be a threading expert.
ASIN:4873113555
ASIN:4877831967
cppcheck <GPL>
Static analysis of C/C++ code. Checks for: memory leaks, mismatching allocation-deallocation, buffer overrun, and many more. The goal is 0% false positives. See the wiki for more information.
cppcheck 日本語マニュアル

Link集へのLink

YoLinux Tutorial - Software Development on Linux
海外サイト。各種OS環境判定用マクロ情報など。

関連書籍

和書

C++実践プログラミング
¥ 6,264円。ビット演算や固定小数点演算等本当に実践的。
ASIN:4894714353
円。
ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか
¥ 9,069円。タイトルを見るとアレゲな感じがするが、内容はビット演算に関する詳細な解説やテクニックの紹介。
正誤表
C++クックブック
¥ 22,328円。
ASIN:4781911560
円。
ロベールのC++入門講座
¥ 4,104円。WebPage版
C++言語のカラクリ 誕生の秘密と舞台裏
¥ 5,957円。
ASIN:4894712784
円。
大規模C++ソフトウェアデザイン (Higher Education Computer Series)
ASIN:4894715295
円。
原書:Advanced C++ Programming Styles and Idioms (Society and Culture in East-Central)
ストラウストラップのプログラミング入門
¥ 7,582円。
原書:Programming: Principles and Practice Using C++ (Developer's Library)
ASIN:4774174084
円。
C++ ポケットリファレンス
  • Template
C++テンプレートテクニック
円。
C++ テンプレート完全ガイド (Programmer’s SELECTION)
¥ 4,298円。
原書:ASIN:0201734842
C++テンプレートメタプログラミング (Programmer’s SELECTION)
¥ 4,104円。
原書:C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ in Depth Series)
  • Reference
国際規格(ISO)C++ライブラリハンドブック
円。
ASIN:4873111919
円。
C++ プライマー 第4版 IT Architect’ Archive クラシックモダン・コンピューティング (IT Architects’ Archive―CLASSIC MODERN COMPUTING)
¥ 7,776円。ビックリする程コンパクトになった。
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル
円。
S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル オンデマンド版
ASIN:4797375957
円。
ASIN:4894714515
円。正誤表
Effective C++ 【改訂第2版】 アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series
円。正誤表正誤表(原書)
新訂版 More Effective C++ (AddisonーWesley professional co)
円。
More Effective C++―最新35のプログラミング技法 (ASCII Addison Wesley Programming Series)
円。正誤表
ASIN:4894712709
円。
ASIN:4894714663
円。
ASIN:4894716860
円。
C++標準的コーディング技法
¥ 27,635円。
C++プログラミングの処方箋 (Programmer's foundations)
円。
C/C++セキュアコーディング 第2版
¥ 4,104円。
ASIN:4756148239, 正誤表
  • 実用
ASIN:4939007286
ASIN:4939007332
Game Programming Gems 3 日本語版
¥ 12,960円
ASIN:4939007901
ASIN:4862460151
Game Programming Gems 6 日本語版
¥ 12,959円
ASIN:4862460763
Game Programming Gems 8 日本語版
¥ 9,800円
ASIN:4873112885

洋書

More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions (C++ in Depth Series)
¥ 5,577円。
C++ in Action: Industrial-Strength Programming Techniques
¥ 10,882円。オンラインで公開中。
C++ Templates
¥ 6,641円。
ASIN:0201734842
  • Reference
C++ Standard Library Extensions, The: A Tutorial and Reference
¥ 5,724円。TR1について書かれてる。

*1 VisualC++のみ対応
*2 VisualC++のみ対応

ページ先頭へ   最終更新のRDF 最終更新のRSS
Last-modified: 2015-06-09 (火) 08:43:17 (687d)
Valid XHTML 1.1 Valid CSS! [Valid RSS]