タグ

関連タグで絞り込む (180)

タグの絞り込みを解除

c++に関するa-hamahamaのブックマーク (478)

  • C++ Weekly With Jason Turner

    Making C++ Fun and Accessible.

    C++ Weekly With Jason Turner
  • C++ 書籍 - C++ の歩き方 | cppmap

    C++ 書籍¶ C++ の学習に役立つ最新の書籍を紹介します。 初学者向けの入門書には マークを付けています。 C++14 以降を扱った書籍¶ 書名 発行年 C++ 規格 内容

  • より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 | レバテックラボ(レバテックLAB)

    より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++技術書5選 2024年7月16日 C++ライブラリアン 高橋 晶 C++語リファレンスサイトcpprefjpを運営し、C++の最新情報を日語で発信している。株式会社Preferred Networksに所属し、スーパーコンピュータのソフトウェア開発に携わっている。 著書として、『C++テンプレートテクニック』(SBクリエイティブ)、『C++ポケットリファレンス』(技術評論社)、『プログラミングの魔導書』(ロングゲート)。 X: @cpp_akira GitHub: faithandbrave 1. 『Effective C++ 第3版』Scott Meyers 著、小林健一郎 翻訳 2. 『Effective Modern C++C++11/14プログラムを進化させる42項目』Scott M

    より価値の高いソフトウェアを開発するために。C++エキスパート・高橋晶が薦める、C++の技術書5選 | レバテックラボ(レバテックLAB)
  • Colabで学ぶC++ヒープ演算と部分ソート完全攻略 - Qiita

    ご覧いただきありがとうございます。 Google Colaboratoryにアカウントをお持ちの方は、上の「Open in Colab」と書かれた青いボタンを押せば直接notebookをColabで開けます。ぜひ動かしてみてください。 過去の記事も含め、全てのコードをGithubで公開しています。 make_heap(), push_heap(), pop_heap(), sort_heap() これらの関数はC++のSTLに含まれているものですが、その有用性にもかかわらず、使い方に関する情報に乏しいです。最近、これらを深掘りしたので、知見を共有いたします。ただし、ヒープ構造に関する情報は散見されるため、ここではその点には触れず、その使い道や使い方についてColabで動く実例を交えながら解説します。 ヒープ演算は、Top Kの値の取得に使えます。Kが配列全体の長さと同じなら全ソート、短けれ

    Colabで学ぶC++ヒープ演算と部分ソート完全攻略 - Qiita
  • メッセージボックスをウィンドウ中央に表示する(C++) : FENIX-PC

    このチュートリアルでは、デスクトップアプリケーションでメッセージボックスをウィンドウ中央に表示する方法について説明します。 作成するアプリケーションの例では、ドラッグ&ドロップでファイルパスを取得する(C++)で開発したコードをパターンとして使用して、フックによってメッセージボックスをウィンドウ中央に表示します。 ‎ フックは、アプリケーションがメッセージ、マウス操作、キーストロークなどのイベントをインターセプトできるメカニズムです。特定の種類のイベントをインターセプトする関数は、フックプロシージャと呼ばれます。フックプロシージャは、受信した各イベントに対して動作し、イベントを変更または破棄できます。 ! 注意 フックは、システムが各メッセージに対して実行する必要がある処理の量を増やすため、システムの速度を低下させる傾向があります。フックは必要な場合にのみインストールし、できるだけ早く解放

    メッセージボックスをウィンドウ中央に表示する(C++) : FENIX-PC
  • 【C++】無名構造体で名前付きタプルを実現する

    実はC++はtupleクラスを使わずにタプル型やペア型の実現ができてしまいます。しかもラベル付きタプルですので、用途によってはtupleクラスよりも使い勝手は良いです。 無名構造体で代用 auto getDate() { struct { int year, month, day; } date = {2016, 12, 24}; return date; } 戻り値をauto型にしている点が肝です。値受け取りの際もautoで受け取る必要があります。 auto date = getDate(); printf("%d年", date.year); // "2016年" printf("%d月", date.month); // "12月" printf("%d日", getDate().day); // "24日" メンバ変数側のデストラクタもきちんと呼ばれますので、無名構造体側のメンバ変

  • C++(Visual Studio)でUTF-8を扱うための試行錯誤のメモ - Qiita

    目的 Visual Studio(Windows)を使ってC++のコンソールアプリケーションを開発する際、 ソースファイルの文字コード 出力するときの文字コード プログラム内で扱うデータの文字コード 全てをUTF-8で扱うための試行錯誤をまとめてみることにします。 2022/01/16 : 記事の公開当初は、ISO C++ 20 標準 (/std:c++20)(u8string)を使う予定でした。 しかし、検証した結果、ISO C++ 20 標準 (/std:c++20)は使わずにISO C++ 17 標準 (/std:c++17)を使う事にしました。 なぜならば、mbrtoc8(char -> char8_t) および c8rtomb(char8_t -> char)が実装されていないからです。 環境 Microsoft Visual Studio Community 2022 (3)

    C++(Visual Studio)でUTF-8を扱うための試行錯誤のメモ - Qiita
  • 今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様

    はじめに C言語から派生したオブジェクト指向プログラミング言語であるC++は、21世紀に入ってまったく別物とも言えるプログラミング言語に成長していきました。それは、Modern C++と称されています。1990年代にC++を触っていたプログラマが現在の仕様を知れば、隔世感に苛まれるのではないでしょうか。連載では、かつてはC++をたしなんでいたという方、今からC++言語を始めるという方に向けて、Modern C++らしい言語仕様をピックアップし紹介していくことで、今のC++言語の姿を理解していただきます。 対象読者 かつてはC++をたしなんでいたという方 今からC++言語を始めるという方 モダンなプログラミング言語のパラダイムに興味のある方 必要な環境 記事のサンプルコードは、以下の環境で動作を確認しています。 macOS Sonoma/Windows 11 Xcode Command

    今どきのプログラミング言語では当たり前! Modern C++で使えるモダンな言語仕様
  • C++erは全員戻り値型の後置記法を使おう - ペイントソフト開発日誌

    目次 目次 「戻り値型の後置記法」って何? 何が嬉しいの? 問題点 「戻り値型の後置記法」って何? C++11から導入された言語仕様です。 タイトルの呼び方は自分が勝手に使っているだけで、英語圏だと「trailing-return-type」がよく使われるらしい。 cpprefjp.github.io この仕様を使うと例えば以下のようなコードが int Add(int a, int b) { return a + b; } このようになります。 auto Add(int a, int b) -> int { return a + b; } 何が嬉しいの? この仕様はC++のメタプログラミングで戻り値型の推論を簡単に行う目的で使用されます。 なんだ、そんなC++上級者のための機能なんて下々の人間には関係ないじゃん、とお思いかもしれませんが、この機能にはもう一つわかりやすい大きなメリットがある

    C++erは全員戻り値型の後置記法を使おう - ペイントソフト開発日誌
  • C++ で, スレッドプールを実装する | C++

    稿では, スレッドプールの仕組みを理解して, C++を用いて, スレッドプールを自身で実装できることを目指します. 対応環境は, C++14 からを想定しています. スレッドプールは, ソフトウェアのデザインパターンの一つで, コンピュータプログラムにおいて非同期処理を実現するためのものです[1]. スレッドプールは, 同時で実行されるタスクの割り当てを待つ複数のスレッドを持ちます[1]. スレッドプールを維持することにより, すぐに終わるタスクのためにスレッドを頻繁に生成と破棄することによるオーバーヘッドを回避することができます[1]. C++ では, C++11 ~ C++20 において, 標準でスレッドプールが用意されておらず, スレッドプールを使いたい場合は, 外部のライブラリを使うか自前で実装する必要があります. スレッドプールを実現するため, 外部ライブラリをそのまま使うこと

    C++ で, スレッドプールを実装する | C++
  • 未来への約束(C++ の future と promise に関する備忘録)

    マルチスレッドが必要になった時は、当にそれが必要なのかどうかを考えたほうが良い。 使わなくて済むならそれに越したことはないし、現にそうやって過ごしてきたので、今さらになって10年以上前に標準ライブラリに追加されたスレッドサポートライブラリについて調べている。 正直 thread と mutex さえ使えれば何とかなるだろうと思っていたが、ライブラリの充実っぷりからして、そんなに甘い世界ではなさそうな気がしてきた。とりあえず std::future と std::promise(とその周辺)についてまとめておく。 future と promise の基 future を一言で表現すると「そのうち値が現れる転送ボックス」といった感じになる。同様に promise を一言で表現するなら「値を入れると future に転送される箱」となるだろう。 作業スレッドからの結果を呼び出し側のスレッドで

    未来への約束(C++ の future と promise に関する備忘録)
  • 本当は怖いfuture+promiseの話 - yohhoyの日記

    C++11標準ライブラリのstd::future+std::promiseクラス利用に関して、不適切な使用パターンに起因するやっかいな不具合についてメモ。 この不具合はマルチスレッドプログラムの未定義動作(undefined behavior)により引き起こされる。下記例のように一見関係ないコード箇所のバグとして検出される場合もあるが、試験等でバグ検出されずに潜在化することも十分ありえる(実運用でデータ破損や突発クラッシュなどを引き起こす)。 c++ - race-condition in pthread_once()? - Stack Overflow c++ - Non-obvious lifetime issue with std::promise and std::future - Stack Overflow まとめ: (future/promiseに限らず)オブジェクトのライフ

    本当は怖いfuture+promiseの話 - yohhoyの日記
  • [C++]契約プログラミング機能のこれまでとこれから - 地面を見下ろす少年の足蹴にされる私

    この記事はC++アドベントカレンダー2023 25日目の記事です。ご参加の皆様お疲れ様でした! C++ Contracts C++20 Contracts 問題点とMVP(Minimum Viable Product) 最初のMVP仕様 関数の再宣言と契約注釈 引数の事後条件からの参照 契約条件式の副作用 C++26に向けたロードマップ 契約注釈のセマンティクス 違反ハンドラ 構文 C++26に向けて、残りの問題 2023年末時点でのMVP 参考文献 C++ Contracts ContractとはContract programmingの略称で、C++ ContractsとはC++における契約プログラミング機能を指す言葉です(sは付いたり付かなかったりします)。 C++ Contractsとは、契約プログラミングという考え方に基づいた設計(契約による設計)をより自然に行えるようにするため

    [C++]契約プログラミング機能のこれまでとこれから - 地面を見下ろす少年の足蹴にされる私
  • Learn Modern C++

    This site contains an original, self-contained guide to learning the fundamentals of Modern C++, intended to be the basis of a self-study course. Some Chapters depend upon material presented in earlier ones, so studying them linearly is recommended. There are also regular posts (accessible from the front page) which cover topics or areas of C++ not covered in the course. If you have any queries or

    Learn Modern C++
  • ちょっと裏技っぽいC++でのMessagePackの作り方

    この記事はSafie Engineers' Blog! Advent Calendar17日目の記事です。 はじめに こんにちは、セーフィーの画像認識エンジニアの木村(勇)です。 セーフィーのエッジAI搭載カメラで動作するアプリケーションの開発を行っています。このアプリケーションの実装ではC++が使われているのですが、サーバーとのデータやりとりでMessagePackというシリアライズの形式を使う機会が発生しました。 案外実用的な情報がなく意外と苦戦したポイントも多かったので、実際に行った手法(あまり正攻法じゃなさそうな)を共有したいと思います。 MessagePackとは 基的にはJsonのような通信データのシリアライズの形式ですが、Jsonより早くてコンパクトです。さまざまな言語でサポートされており、それらでデータを交換することが可能となります。 導入 MessagePackはこちら

    ちょっと裏技っぽいC++でのMessagePackの作り方
  • C++ プログラミングの生産性を少し改善する Visual Studio の機能(2023)

    C++ Advent Calendar 2023 および Siv3D Advent Calendar 2023 18 日目の記事です。 記事では、Visual Studio での C++ プログラミングの生産性向上に役立つ IDE の機能を、最近のバージョンで追加された無料機能を中心に紹介します。 1. コーディング用の合字フォント語環境の Visual Studio のデフォルトのフォントは MS ゴシックなので、フォントにこだわりのない人は MS ゴシックを使い続けているかもしれません。英語環境では Visual Studio 2022 から Cascadia がデフォルトのフォントになっています。 Cascadia は、Microsoft が 2019 年にリリースしたコーディング用のオープンソースフォントで、合字(リガチャ)の有無に応じて Cascadia Code と C

    C++ プログラミングの生産性を少し改善する Visual Studio の機能(2023)
  • 作って理解する浮動小数点数① 基本編 - in neuro

    以前も浮動小数点数の記事を書いた(作る側の気持ちで理解する浮動小数点数 - in neuro)。だがその時は、浮動小数点数に関するアイデアの説明しかしておらず、実際の「浮動小数点数(IEEE754)」については説明しなかった。今回の記事の目的は、実際の浮動小数点数についてちゃんと解説し、またいくつかの演算をビット単位で自力で書くことで、理解を深めることである。 現実の浮動小数点数 演算について書くとは言ったが、その前に少し浮動小数点数についての基的なアイデアをおさらいしておこう。このあたりの知識は演算を理解する際にも必要になる。すでに知っている人には退屈だろうから、演算編で引っかかったときだけ見るのでも構わない。 浮動小数点数の基的構造 浮動小数点数はその名の通り、小数点の位置が動的に変わる数である。基的な表現方法は1.234x10-5のような指数表記と同様だ。 例えば単精度(32b

    作って理解する浮動小数点数① 基本編 - in neuro
  • 2023年のコンパイル時レイトレーシング - in neuro

    これは qiita.com の12/16の記事です。やばいもう16日が終わってしまう! はじめに 太古の昔、あるC++プログラマ*1がtemplateの再帰と特殊化を使ってコンパイル時に計算ができることを「発見」*2*3したその日から、C++とコンパイル時計算は分かちがたく結びついています。 言語機能を来意図されていなかった方法で活用する曲芸的な技巧だったコンパイル時計算は、その強力さを買われコミュニティを席巻し、C++11での constexpr の導入によりある意味で公式に認められたものとなりました。 導入当初は return 文一つだけしか持てなかった constexpr 関数は、それでも三項演算子による条件分岐や再帰によってコンパイル時計算を大いに盛り上げました。 そしてC++14で条件分岐、ループ、変数の書き換えが、C++17ではラムダが、C++20では仮想関数と動的メモリ確保

    2023年のコンパイル時レイトレーシング - in neuro
  • C++ 日本語

    C++C++ Language #define directive #include directive #line directive #pragma directive Abstract class Access specifiers Acronyms オーバーロードされた関数のアドレス Aggregate initialization Type alias alignas specifier alignof operator 代替演算子の表現 Argument-dependent lookup Arithmetic operators Array declaration ASCII Chart asm declaration Assignment operators 属性指定子シーケンス(C++11以降) attribute: assume attribute: carri

  • メモリ領域の再利用は結構気を付けたほうがよい件 - Qiita

    おことわり この記事で言及する C++ 規格はすべて、C++20 相当のドラフト N4861 (PDF/HTML) を基準にしています。 はじめに 私が書いている C++ プログラムでは、処理の途中経過や結果を格納するためのメモリ領域を必要に応じて再利用しています。 一般的には処理の先頭で必要なぶんのメモリを確保し、処理の末尾で解放するわけですが、メモリの確保・解放にかかるコストと処理の粒度を勘案し、再利用するほうが効率的だと判断するときがあります。 // メモリ領域を再利用するイメージ void reuse_storage() { // この記事において pointer のアドレスは各オブジェクトに必要なアライメントを満たしているとする auto pointer = operator new(1024); // メモリ領域を std::string に利用 auto str = new

    メモリ領域の再利用は結構気を付けたほうがよい件 - Qiita