タグ

C++に関するcitrusunshiuのブックマーク (52)

  • C++20からC++23までの変化

    決断するための勇気、そのためのBacklog / Courage to make decisions, Backlog for that.

    C++20からC++23までの変化
  • おっさんのためのModernC++入門ガイド(草稿) - dec9ue's diary

    みなさんはC++の読み書きができますか? 自信がある方、いつ頃勉強しましたか?もし20世紀に勉強したのであれば、その知識は相当古いです。実質現在のModernC++(C++11以降のC++)とは概念上の互換性がないので脳のアップデートが必要です。 自信がない方、文法は知っているけどなんとなく使いこなせていない方、マサカリ屋にあーだこーだ言われて大混乱している方。必勝パターンを身につければもっと楽にコードを読み書きできるようになるかもしれません。 この文章の目的は、ModernC++におけるメンタルモデル(考え方)や必勝パターンをざっくりと導入することでみなさんが楽にModernC++を読み書きできるようなお手伝いをすることです。主要な内容としてはムーブセマンティクスと右辺値 とその次の章でだいたいA4換算で15ページくらい?ほかは正直流し読みしてもらえるような内容です。また、内容的にはその

    おっさんのためのModernC++入門ガイド(草稿) - dec9ue's diary
  • ゼロから学ぶ C++

    ホーム 1. C++ を始める 2. 基構文 3. コンテナ 4. ファイル分割とスコープ 5. ストリーム操作 6. メモリの管理 7. クラス 8. キャスト 9. テンプレート 10. エラー処理 11. ビルドとライブラリ 12. メモリレイアウト 単体テスト デバッグ ビルド自動化 付録 このサイトは C++ について説明した学習サイトです。 書を通じて C++ の開発環境や構文・単体テストの書き方などが 一通り学べるようになっています。 対象¶ C++ を初めて学ぶ人 プログラム言語を 1 つ以上経験したことのある人 関数やクラス・オブジェクト指向に対する知識をある程度前提にします。 C++ の特徴¶ C++ は ビャーネ・ストロヴストルップ により開発されたプログラミング言語です。 C++ には主に次のような特徴があります。 高パフォーマンス メモリ使用量が少ない 柔軟性

  • ゲーム開発者のための C++11~C++20, 将来の C++ の展望 - CEDEC2020 - Speaker Deck

    ゲーム開発者のための C++11~C++20, 将来の C++ の展望 【CEDEC ページ】https://cedec.cesa.or.jp/2020/session/detail/s5e8327a52702c 【解説付きの書籍版 📚】https://zenn.dev/tetsurom/books/cpp11-cpp20-for-game-developers

    ゲーム開発者のための C++11~C++20, 将来の C++ の展望 - CEDEC2020 - Speaker Deck
  • C++ の歩き方 | cppmap

    C++ の歩き方 | cppmap¶ 📢 CEDEC 2020 にて講演を行いました。発表資料を公開しています。 CEDEC 2020 | ゲーム開発者のための C++11~C++20, 将来の C++ の展望 📢 コンテンツ拡充のため【募集】タグのスレッドへ情報をお寄せください。 cppmap.docs | Issues 📢 サイトの運営は、GitHub Sponsors によって支えられています。 GitHub Sponsors | Become a sponsor to Reputeless このサイトについて¶ C++17, C++20, C++23, C++26 に関する情報を調査・提供します。 管理者 @Reputeless と、コントリビュータの皆様 によって執筆されています。 コントリビュート方法 ライセンス¶ サイトの記事とサンプルコードはパブリックドメインです

  • 江添亮の詳説C++17

    はじめに 書は2017年に規格制定されたプログラミング言語C++の国際規格、ISO/IEC 14882:2017の新機能をほぼすべて解説している。 新しいC++17は不具合を修正し、プログラマーの日々のコーディングを楽にする新機能がいくつも追加された。その結果、C++の特徴であるパフォーマンスや静的型付けは損なうことなく、近年の動的な型の弱い言語に匹敵するほどの柔軟な記述を可能にしている。 人によっては、新機能を学ぶのは労多くして益少なしと考えるかもしれぬが、C++の新機能は現実の問題を解決するための便利な道具として追加されるもので、仮に機能を使わないとしても問題はなくならないため、便利な道具なく問題に対処しなければならぬ。また、C++の機能は一般的なプログラマーにとって自然だと感じるように設計されているため、利用は難しくない。もしC++が難しいと感じるのであれば、それはC++が解決すべ

  • Google C++ スタイルガイド(日本語全訳) Google C++ Style Guide (Japanese)

    Google C++ スタイルガイド 日語全訳 訳者前書き ドキュメントはhttps://github.com/google/styleguide/ にて公開されているGoogle C++ Style Guideを日語に訳したものです。 オリジナルの最新版は https://google.github.io/styleguide/cppguide.htmlで読むことができます。 commit 6ebcd8c (Oct 24, 2023) 時点のものを底としています。 オリジナルと同様CC-By 3.0 Licenseで頒布します。 誤訳を含んでいる恐れがあります。訳文にマウスを重ねると原文が表示されますので、そちらもあわせて参照してください。 訳者はGoogleと無関係です。 誤訳の指摘・改善案は GitHub の Issues か Pull Requests からお願いします。

  • 超入門編 — Google Mock ドキュメント日本語訳

    超入門編¶ サルでも分かる Google C++ Mocking Framework Google C++ Mocking Framework とは何か? どうして Google Mock を使うのか? はじめ方 Mock Turtles の場合 モッククラスを書く どうやって定義するか どこに書くか テストでモックを使う 任意の Testing Framework で Google Mock を利用する Expectation を設定する 一般的な構文 Matchers:期待する引数は何か? Cardinalities:何回呼ばれるか? Actions:何をするべきなのか? 複数の Expectation を利用する 順序あり呼び出し と 順序なし呼び出し 不要な呼び出し 次のステップ (注意:分からないコンパイルエラーが出たら, Google Mock Doctor を試してください.

  • Rust開発者のためのC++入門書:所有権と借用について | POSTD

    今日、ソーシャルサイト「reddit」を見ていたら、“ Rustの基礎を学んでからC++を始める場合 、何を勉強すればいいか”と問う投稿があり、私は自分のブログを復活させ、その中で質問への答えを書いたら面白いのではと考えました。 私にはRustを学んだ後にC++を扱う仕事に就いた経験があるため、Rustの経験を持つ人がC++に移行していく様子をまとめてみたいと思ったのです。 稿はC++の構文と特徴を既に知っていて、RustからC++の世界に移行する方法に興味を持っている読者を対象とします。 しかし、私は全てに精通しているわけではないので、稿では所有権(ownership)、借用(borrowing)、ライフタイム(lifetime)に焦点を当てて説明していきます。 所有権と移動 Rustの一番大きな特徴は所有権です。所有権は、プリミティブ型ではない値に対するデフォルトの動作として、コピ

    Rust開発者のためのC++入門書:所有権と借用について | POSTD
  • C++11スマートポインタ入門 - Qiita

    [2022-06-22] さすがに情報が古くなってきたため、最新の規格に合わせて記事の内容を再編集した記事を新たに書きました。よろしければ、こちらの新記事「C++20スマートポインタ入門」をご参照ください。 C++11では、unique_ptr<T> shared_ptr<T> weak_ptr<T>の3種のスマートポインタが新たに追加された。これらのスマートポインタは、いずれもメモリの動的確保の利用の際に生じる多くの危険性を低減する目的で使用されるが、それぞれ独自の考え方と機能を持っている。3種のスマートポインタを適切に使い分けることで、安全性と開発速度の向上が見込めるだけでなく、プログラマの意図に合わせて「ポインタ」を記述し分けることができる、非常に強力なツールとなる。 解説では、スマートポインタについて初めて学ぶ人を対象に、C++11で追加された3種のスマートポインタの機能と使い

    C++11スマートポインタ入門 - Qiita
  • Rustは何が新しいのか(基本的な言語機能の紹介) - いもす研

    Rust は、Firefox を開発する Mozilla が開発し、次世代ブラウザの開発に使っているプログラミング言語です。借用検査という概念を導入することによりメモリ安全およびデータ競合安全をコンパイラが保証する言語であり、2015年中頃の安定版のリリースあたりから次第に注目を集めるようになりました。 メモリ安全とは、メモリの範囲外アクセスや二重解放、ヌル参照、未初期化領域へのアクセスがない状態を表します。ただし、Rust の言うメモリ安全とは、メモリリークをしないことを保証するものではありません。 データ競合安全とは、あるひとつのオブジェクトに対しての読み込みおよび書き込みのが同時に起き結果が不定になる状態にならないことを表します。競合状態とは異なります。 無名関数という概念を様々な言語が次々と導入したように、プログラミング言語は相互に影響を及ぼし徐々に変化しています。Rust は「寿

  • C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD

    私は多くの小規模プロジェクトで Make を使ってきましたが、より大きな規模のプロジェクトになると、それは非常にうんざりするようなものでした。最近までは、自分のビルドシステムに行いたいことが4つあったのですが、Makeでの方法が分かりませんでした。 out-of-sourceビルド(オブジェクトファイルが、ソースとは分離されたディレクトリにダンプ出力されます) 自動生成される(かつ正確!)ヘッダの依存関係 オブジェクト/ソースファイルのリストの自動的な決定 インクルードディレクトリのフラグの自動生成 以下にこれらの全てを行える、C、C++、およびアセンブリで動作するシンプルなMakefileを紹介します。 MAKEFILE TARGET_EXEC ?= a.out BUILD_DIR ?= ./build SRC_DIRS ?= ./src SRCS := $(shell find $(S

    C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD
  • C++1z 並列アルゴリズムライブラリ - Faith and Brave - C++で遊ぼう

    C++1zでは、並列アルゴリズムのライブラリが導入されることになりました。このライブラリは、<algorithm>, <numeric>, <memory>で定義されるアルゴリズムのオーバーロードという形で提供されます。 using namespace std::execution; // 実行ポリシーの名前空間 std::vector<int> v = … std::sort(v.begin(), v.end()); // これまで通りの順序実行 std::sort(seq, v.begin(), v.end()); // 明示的に順序実行を指定 std::sort(par, v.begin(), v.end()); // 並列実行を許可 std::sort(par_unseq, v.begin(), v.end()); // 並列and/orベクトル実行を許可 このライブラリの設計は、

    C++1z 並列アルゴリズムライブラリ - Faith and Brave - C++で遊ぼう
  • C/C++プログラマのための開発ツール

    Windows 11 information that can be used at the development siteAtomu Hidaka

    C/C++プログラマのための開発ツール
  • C++11スマートポインタで避けるべき過ち Top10 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) 私は新しいC++11のスマートポインタをとても気に入っています。自分でメモリを管理するのが嫌だと感じる多くの仲間たちにとって、これはいろいろな面で天の助けでした。私の場合、このおかげで新人にC++を教えるのがずっと楽になりました。 しかし、C++11のスマートポインタを幅広く使っていた2年ちょっとの間で、使い方を誤ると、プログラムの効率が落ちたりクラッシュして壊れたりするという事態に何度も遭遇しました。参照用に、以下に例を載せました。 まずはこれらの”過ち”を、簡単なAircraftクラスを例に取って見てみましょう。 class Aircraft { private: string m_model; public: int m_flyCount; weak_p

    C++11スマートポインタで避けるべき過ち Top10 | POSTD
  • C/C++で並列コンピューティング(並列ライブラリ編) - Qiita

    C/C++で並列コンピューティング(スレッド・ライブラリ編)の続編。今度はC/C++の並列ライブラリを用いて円周率の近似計算コードを書いてみた。タスク割り当てやスレッドの起動を自分でやる必要がないので簡潔に記述できる。 OpenMP Intel TBB (Threading Building Brocks) Microsoft PPL (Parallel Patterns Library) OpenMP 既存コード中のループにpragmaで並列化を指示するだけ。簡単。 #include <omp.h> // PI近似計算 (OpenMP) double compute_pi_by_openmp(const int num_of_partitions) { if (num_of_partitions < 1) return -1.; double width = 1. / (double)n

    C/C++で並列コンピューティング(並列ライブラリ編) - Qiita
  • Analyzing C-C++ Code Quality by Using Code Analysis - Visual Studio 2015

    This browser is no longer supported. Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

    Analyzing C-C++ Code Quality by Using Code Analysis - Visual Studio 2015
  • Play Siv3D!

    新サイトに移転しました Siv3D の新しい Web サイトは siv3d.github.io です。

    Play Siv3D!
  • EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1

    (2016/02/10 追記: EASTL は長らく EAWebKit の一部としてライセンスが不明瞭なまま公開されていましたが、この日 BSD ライセンスで正式に公開されました https://github.com/electronicarts/EASTL) 若干古いものですが、2007 年に発表された、Electronic Arts によるゲーム開発向けの改良を加えた STL、"EASTL" の仕様。 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html 仕様だけで実装が公開されてないのが非常に残念なのですが、それは別として、何故こんなものが必要なのか、どういう事情でこの機能が盛り込まれたのか、といったゲーム開発現場の事情が細かく解説されていて、とても参考になります。特に、既にある程度 C++ に習熟してい

    EASTL から垣間見るゲームソフトウェア開発現場の現状 その 1
  • 【初心者 C++er Advent Calendar 2015 1日目】初心者が C++ を勉強するときに最低限押さえておいたほうがよい C++11/14 の機能 - Secret Garden(Instrumental)

    この記事は初心者 C++er Advent Calendar 2015の1日目の記事になります。 アドベントカレンダーはまだ空きがあるので気になる方は参加してみるとよいと思います。 さて、最近だと C++11/14 で書かれているも増えてきたんですが、やっぱり昔の入門書だとどうしても C++03 が中心になってしまっていてちょっとつらいんですよねー。 と、いうわけで『これから C++ をはじめてみたい!』という人に知っておいてほしい(抑えておいてほしい)C++11/14 の言語機能をちょっとまとめてみました。 C++11/14 を始める前に C++ ではコンパイラやバージョンによって実装されている C++11/14 の機能がまちまちです。 そのため、今回紹介した機能が手元の環境では動作しない可能性もあります。 単に機能を試すだけであれはオンラインコンパイラのWandboxで試してみると

    【初心者 C++er Advent Calendar 2015 1日目】初心者が C++ を勉強するときに最低限押さえておいたほうがよい C++11/14 の機能 - Secret Garden(Instrumental)