タグ

C++とc++に関するto-ke-iのブックマーク (19)

  • VSCode で clangd を使って、賢いC++インテリセンス環境を整える - Qiita

    VSCode の標準のC++インテリセンスでは、簡単なコード補完などや、構文が間違ってるなどのエラー表示はリアルタイムに出来ますが、警告などはリアルタイム表示出来なかったり、その他コーディング時に行ってほしい賢い機能が不足しがちです。 例えば以下のコードは、セミコロン忘れなどのエラーは表示してくれますが、未初期化変数の f などはコンパイル時に警告がちょろっと出るだけで、見落としてしまいます。 #include <iostream> using namespace std; int main(){ int f; cout << f << endl; cout << "semicolon" << endl return 0 } MS 標準の C++ インテリセンスはそこまで賢くないからというのが理由なのですが、ここで変わりに clangd を使うことで、賢いリアルタイムインテリセンスを使える

    VSCode で clangd を使って、賢いC++インテリセンス環境を整える - Qiita
  • C++で学ぶ!メモリレイアウトとvtableのすゝめ 〜動的ポリモフィズムを実現する仕組み〜 - Qiita

    最初に 記事はvtableについての知見をC++ベースで解説するものとなります。vtable自体はオブジェクト指向プログラミング言語においてポリモフィズムを実現するために必要な機能となっているので、ここで解説するものはJavaやC#などの初学者にも有用な知識かと思います。 また対象読者のスキル想定としては以下のようになります。 基的なC++の構文を読むことができる。 基的な継承の概念が理解できている。 動的ポリモフィズムが理解できている。 オフセットとは何かを理解している。 できるだけ初心者の方にもわかりやすいように書こうと思いますので、テーマとしてポイントとならないnullチェック等のコードは含みません。ご不明な点や理解が難しかった点、記事と事実が異なる点があれば下記連絡先までご一報ください。または単にこの記事に対してコメントをして頂く形でも構いません。どうぞ宜しくお願いします。

    C++で学ぶ!メモリレイアウトとvtableのすゝめ 〜動的ポリモフィズムを実現する仕組み〜 - Qiita
    to-ke-i
    to-ke-i 2023/12/28
  • C++erですがCOMに翻弄されています: 再入との戦い - Qiita

    C++ Advent Calender この記事はC++のカレンダー | Advent Calendar 2023 - Qiita の21日目の記事です。 20日目: Try to make a try ! by @wx257osn2 22日目: C++ コンパイル時「出力」で画像ファイル生成 #C++ - Qiita by @Raclamusi はじめに 2021年に新卒で今の会社に入社して以来、ずっととある一つの製品の開発部門に所属していて、その中のWindowsチームというところにいます。 WindowsチームなのにiOSの要件が来たり、サーバーEoLの要件が来たりとなんだか特殊部隊感があるのですが、きっと気の所為です。 さて、ここまで入社以来ずっと格的な理解から逃げ続けてきた存在があります。それがCOMです。 ところがついにこの秋から冬にかけての要件ではVisual Studio

    C++erですがCOMに翻弄されています: 再入との戦い - Qiita
  • 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++でジョブシステムを作ってみる(1)

    ジョブシステム (Job System) ゲームエンジンの勉強をしているとジョブシステムの話がよく出てくるので、実際にC++20で実装してみました。マルチスレッドに慣れていないため、正しいアプローチである確信はありません。重要なミスがあったら教えていただけると助かります。 コードは標準ライブラリにある機能は素直に使い、シンプルな実装を目指します。また、この記事の全てのコードはパブリックドメインとします。 これから、3つのステップでジョブシステムを実装していきます。 ジョブを並列実行する機能 ジョブ同士に依存関係を設定する機能 大きなジョブを分割して並列化する機能 この記事ではステップ1の最も基的なジョブシステムを実装することを目標にします。 実装に入る前に、雰囲気を伝えるために、各ステップにおけるインターフェイスを示します。 // スレッド数4としてジョブシステムを作成 JobSyste

    C++でジョブシステムを作ってみる(1)
  • データ型は明示しないで! Modern C++での型推論

    このように、(1)(2)と「vector<int>」を2回も書かなければなりません。特に(2)では、右辺の型は分かっているんだから、左辺はそれに合わせてよ! という文句が出そうです。 初期化漏れを防止する このように、同じ意味の型を何回も書くのはかったるいな! というときに型推論は役立つわけですが、もっと切実な理由があります。それは、変数の初期化漏れの防止です。JavaでもRustでもそうなんですが、変数は宣言しっぱなしでOKです。宣言しっぱなしというのは、明確な初期化が行われていないという意味です。こうなると、その変数を参照しようとするといろいろとまずいことが起きてきます。 基データ型とかなら、どんな値か分からない ポインタ型とかなら、どこを指しているか分からない(ダングリングポインタ) なので、実行時にプログラムが不可解な動作をしたり、いきなり落ちたりするわけです。しかし、コンパイラ

    データ型は明示しないで! Modern C++での型推論
  • C++でOpenCV完全入門!

    この記事は「自動運転システムをエッジデバイスに組み込むための技術」を3回に分けて紹介するTURINGのテックブログ連載の第1回の記事「C++OpenCV完全入門!」です。 第2回の「OpenCVをNPPにした結果→10倍高速に!」、第3回の「詳解V4L2 (video for linux 2)」もぜひご覧ください! はじめに こんにちは。完全自動運転EVを開発するベンチャー企業、TURING株式会社でインターンをしている東大工学部3年の井上信多郎です。 我々人類は、車を運転するにあたって多くの情報を目から取り入れています。目から取り入れた情報を元に、アクセル・ブレーキ・ハンドルを操作しています。 自動運転の場合、その目に相当するセンサがカメラであり、カメラから得た情報を元に車を運転することになります。カメラから得る情報とは、ずばり画像です。画像の中から信号、標識、前方車両などの必要なもの

    C++でOpenCV完全入門!
  • ZigはCMakeの代替となるか

    既存のプロジェクトで使用しているコンパイラを置き換えるだけで、Zigに付属しているCコンパイラを利用できる。 クロスビルドが標準で可能 上でも述べた通り、Zigは標準でクロスコンパイルが可能である。 Zig libcのTaget一覧 ❯ zig targets | jq ".libc" [ "aarch64_be-linux-gnu", "aarch64_be-linux-musl", "aarch64_be-windows-gnu", "aarch64-linux-gnu", "aarch64-linux-musl", "aarch64-windows-gnu", "aarch64-macos-none", "aarch64-macos-none", "armeb-linux-gnueabi", "armeb-linux-gnueabihf", "armeb-linux-musleabi

    ZigはCMakeの代替となるか
  • Rustに移行する理由の大部分は、C++11以降の更新とガイドライン順守で消えますか?まあ、CargoこそC++にほしかったもののひとつでしょうけど。

    回答 (3件中の1件目) その通りですね。あとは言語の機能として標準でユニットテストがあるのもC++に対するメリットの一つです。 ちなみにCargoは以下の複数の機能を統合しています。 1. ライブラリ管理 2. ビルダー 3. タスクランナー このうち2,3はC++ではCMakeを利用すればほぼ同等のことができますが、如何せんCMake自体の仕様がまた大きすぎて初見では結構ハードルが高いですね。1はC++はいろいろ乱立していますが決定的なものは無いですね。私はもうgit submoduleで管理しています。ユニットテストについてはCatch2 [1]という素晴らしいフレームワークが...

    Rustに移行する理由の大部分は、C++11以降の更新とガイドライン順守で消えますか?まあ、CargoこそC++にほしかったもののひとつでしょうけど。
  • 競プロで役立つC++20新機能 - Qiita

    はじめに 競プロのコーディングが快適になるC++20新機能をまとめました!! C++20の豊富な新機能から競プロで便利な機能を合計で16個紹介します. ※(2023/8/7追記) AtCoderでは2023年の言語アップデートにより、ほとんどの機能が使用可能となりました。新バージョンのgcc12.2では、紹介されている機能のうち <format> を除くすべての機能が使用可能です。 参考文献 https://cpprefjp.github.io/lang/cpp20.html https://en.cppreference.com/w/cpp/20 を参考にしました. cpprefjp以外をあまり見ていないので,間違っているところがあるかもしれません. 誤りに気づいたら指摘していただけると幸いです. 標準ライブラリの新機能 1. コンテナのメンバ関数の追加 1-1. 連想配列に conta

    競プロで役立つC++20新機能 - Qiita
  • C++ Cheat Sheets & Infographics

    Standard Algorithms

    C++ Cheat Sheets & Infographics
  • おっさんのためのModernC++入門ガイド(草稿) - dec9ue's diary

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

    おっさんのためのModernC++入門ガイド(草稿) - dec9ue's diary
  • Learn Contemporary C++ | Concise&Visual Examples

    Learn up-to-date, idiomatic C++ with code examples, concise explanations, cheat sheets and infographics. -- Lerne aktuelles, idiomatisches C++ mit Code-Beispielen, knappen Erklärungen und Infografiken. -- 学现代的C++ // 代码示例,简洁的说明和图表

    Learn Contemporary C++ | Concise&Visual Examples
  • C++20 Coroutine Iterators - Sticky Bits - Powered by Feabhas

    A blog looking at developing software for real-time and embedded systems In my first blog post about C++20 Coroutines I introduced the concepts behind a synchronous or generator style coroutine and developed a template class to support coroutines for any data type. In this post I’ll add an iterator to the template to support the range-for loop and iterative algorithms. You may want to review that

    C++20 Coroutine Iterators - Sticky Bits - Powered by Feabhas
    to-ke-i
    to-ke-i 2021/09/25
  • シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ

    こんにちは! エンジニアリンググループ マルチデバイスチーム 新卒1年目の小林です。 エムスリーでは、2週間に1度、Tech Talkという社内LT会(現在はリモートで)が開催されています。これは、とある回の発表テーマリストです。 Tech Talkのとある回の発表テーマリスト このように、最近エムスリーでは文字列が流行っている(?)ようなので、その勢いに乗って私も文字列照合アルゴリズムについて書きたいと思います!(業務とは全然関係ない話です) Knuth-Morris-PrattやBoyer-Mooreアルゴリズムは解説記事がたくさん出ていると思うので、この記事ではシンプルかつ高速なQuick-SearchとQuite-Naiveアルゴリズムについて説明し、速度比較を行った結果についてご紹介します。 文字列照合アルゴリズムとは テキストとパターンという文字列が与えられたときに、中に出現す

    シンプルかつ高速な文字列照合アルゴリズムを紹介します - エムスリーテックブログ
  • 江添亮のC++入門

    書はプログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶためのである。書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。C++コンパイラーをC++で書く場合、C++コンパイラーのソースコードをコンパイルする最初のC++コンパイラーをどうするかというブートストラップ問題がある。書はいわばC++における知識のブートストラップを目指しただ。これにより読者はを先頭から読んでいけば、まだ学んでいない概念が突如として無説明のまま使われて混乱することなく読み進むことができるだろう。 C++知識のブートストラップを意識した入門書の執筆はなかなかに難しかった。ある機能Xを教えたいが、そのためには機能Yを知っていなければならず、機能Yを理解するためには機能Zの理解が必要といった具合に、C++の機能の依存関係の解決をしなければならなかったからだ。著者自身も苦し

  • C++でクリーンなコードの書き方 - Qiita

    /追記予定のもの/ explicit final デフォルトコンストラクタの明示的指定について スマートポインタ(さわりだけ) ODR系のなんか(ファイル分割とか) デフォルト引数でコンストラクタに引数を渡さないようにするのは良くない 導入 私が持てる全ての知識を共有するために、このような記事を書くことを決めました。 前半はC++のお作法。 後半はオブジェクト指向の普遍的な設計方法についてです。 なお、C++11以降を前提として話を進めていきます。 謝辞 私に今回の記事を書くにあたってアドバイスを提供してくれたツイッターの方々、 @kazatsuyu @yumetodo @coord-e @badadder @Gaccho に感謝の意を表します。 using namespace stdを使うな 以下のコードは典型的な悪いコードです。

    C++でクリーンなコードの書き方 - Qiita
  • PVS‑Studio | Posts: articles

    To get the licence for your open-source project, please fill out this form

    PVS‑Studio | Posts: articles
  • ゼロから学ぶ C++

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

    to-ke-i
    to-ke-i 2020/04/10
  • 1