タグ

c++に関するamagasa99のブックマーク (22)

  • C++入門 AtCoder Programming Guide for beginners (APG4b) - AtCoder

    プログラミングに詳しい方へ ここから先はプログラミング未経験者の方は読む必要がありません APG4bは多くの一般的な教材とはいくつか違う点があるため、プログラミングに慣れた人がこの教材を見ると色々思うところがあるかもしれません。 ここではこの教材がどのようなコンセプトで書かれているかを説明した後、APG4bがなぜ一般的でないことをしているのかを説明します。 APG4bのコンセプト プログラムとは何のためにあるのでしょうか? 「便利なアプリを作るため」「ゲームをつくるため」「『人工知能』をつくるため」など、色々あると思います。 これらの具体例は決して間違いではありませんが、プログラミングにはより根源的な用途があります。 それは「計算」です。 コンピュータが開発された当初、その用途は高度な電卓でした。 それから月日が流れ、様々な用途に応用されるようになっても、最終的にコンピュータが行っているこ

    C++入門 AtCoder Programming Guide for beginners (APG4b) - AtCoder
  • 江添亮のC++入門が出版された

    江添亮のC++入門が出版された。もうすでに一部書店では店頭に並べているところもあるようだ。 9/18新刊『江添亮のC++入門』KADOKAWA(978-4-04-893071-0)江添亮 著◆「C++」棚にて展開中!次の規格として標準化が進められているC++20を意識しながら、現行の規格に準拠したC++プログラムの書き方を徹底的に解説。C++による格的なプログラム開発に必須の知識を網羅した格的な入門書。 pic.twitter.com/fZEu6Sm1xa — 書泉ブックタワーコンピュータ書売り場 (@shosen_bt_pc) September 18, 2019 このはタイトル通り入門書だ。C++のソースコードのコンパイル方法から初めて、GNU Makeによるビルドシステムを少し触り、基的な文法を解説し、一部のライブラリの仕組みまで解説する。 このの執筆にあたっては、知識のブ

  • 120 行で vi っぽいエディタを作る - Qiita

    参考:Qiita では印刷がうまくできません。プリントしたい人や PDF 化したい人は http://gurakura.sakura.ne.jp/culture/vi-like_text_editor_by_120_lines/ の方を見て下さい(同じ内容です)。 IOCCC 91 Best Utility 実を言うと 120 行も必要なく、28 行で書けちゃったりするのですが("Best Utility IOCCC 91" https://github.com/SirWumpus/ioccc-ae/tree/master/91)、それはさておき、文書では現代風にこのプログラムを書き直してみます。古文の現代語訳みたいなものだと思っていただければ幸いです。 ちなみに IOCCC 91 で Best Utility 部門を受賞した全 28 行のプログラムは、このようなソースコードだったそうで

    120 行で vi っぽいエディタを作る - Qiita
  • ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita

    NTT データ数理システムでリサーチャーをしている大槻 (通称、けんちょん) です。 今回はソートについて記します。 0. はじめに データ構造とアルゴリズムを学ぶと一番最初に「線形探索」や「ソート」が出て来ます。これらのテーマは応用情報技術者試験などでも頻出のテーマであり、アルゴリズムの Hello World とも呼ぶべきものです。 特にソートは、 計算量の改善 ($O(n^2)$ から $O(n\log{n})$ へ) 分割統治法 ヒープ、バケットなどのデータ構造 乱択アルゴリズムの思想 といった様々なアルゴリズム技法を学ぶことができるため、大学の授業でも、アルゴリズム関連の入門書籍でも、何種類ものソートアルゴリズムが詳細に解説される傾向にあります。記事でも、様々なソートアルゴリズムを一通り解説してみました。 しかしながら様々な種類のソートを勉強するのもよいが、「ソートの使い方」や

    ソートアルゴリズムを極める! 〜 なぜソートを学ぶのか 〜 - Qiita
  • C++完全理解ガイド Rev1.4.01 - Qiita

    はじめに C++を完全理解したので完全理解ガイドを書く。 最初に言っておくがタイトルは詐欺で、実際はポエムである。 僕は仕事C++を書いたことはないのでなんか変なことを言っているかも知れない。 ところで無職になったので、普通にC++で職がほしい。 2018年6月から受託で仕事をもらい、毎日C++17を書いています。 2018年9月から雇用され、毎日C++17を書いています。 かなり雑に書いているはずなので、コメント等でどんどんマサカリを投げてほしい。 僕は何者か 工学部を卒業して4年ほど高校の理科教師をやっていたが、現在無職になった人。 工学部を卒業して4年ほど高校の理科教師をやっていた。 最初は良かったのですが、授業に慣れ、このまま自分の成長が止まってしまうのかとなぁと思い、辞めて無職に。 一ヶ月無職を楽しんだあと、某から受託でC++を書く仕事をもらい、C++17を書いている。 主にツ

    C++完全理解ガイド Rev1.4.01 - Qiita
  • 江添亮の詳説C++17

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

  • C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 先日、社内で主にLinux上でC/C++を用いている開発者向けの講義をしました。 「こんなことができる」と知ってもらい、興味を持てば各自で勉強してもらおうと広く浅くツールを紹介しました。 gtags, ASan, Valgrind, addr2line, cppcheck, SystemTap, perfなどです。 興味があれば講義資料「C/C++プログラマのための開発ツール」をごらんください。 コンパイラオプション 受講者には新人やサイボウズ・ラボユースの学生もいたので基的なところから紹介しました。 C/C++コンパイラを使うときはできるだけ警告オプションをつけるのが望ましいです。 警告が出るのは自分のコードの書き方に不備があることが多いからです。 gccやclangでは-Wall -Wextraは基としてそれ以外にも有用なオプションがあります(C++

    C/C++プログラマのための開発ツール - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 中規模なC++の新しいプロジェクトを作るときにやるべきこと 2016年版 - Qiita

    C++で新しいプロジェクトを作成するときに自分が定型的にやっていることを備忘録的にまとめました。完全に我流なので「こういうやり方もあるよ」などのアドバイスは歓迎です。 この記事中では各ファイルで説明が必要な部分だけを示しますが、全てのサンプルはgithubにおいてあります。 cpp-template: https://github.com/m-mizutani/cpp-template 前提 UNIXベースのCLIで動作するアプリケーション or ライブラリを作る コンパイルはcmakeを使用する ファイル名はソースコードが*.cc、ヘッダファイルが*.hppだとする サンプルではcpptemplate というプロジェクト名だと仮定します プロジェクト用ファイルの準備 CMakeList.txt サンプル cmakeでビルドするための設定ファイルです。このサンプルではCLIアプリケーション

    中規模なC++の新しいプロジェクトを作るときにやるべきこと 2016年版 - Qiita
  • C++マニアック,C++入門,C++講座,よくわかるC++言語プログラミング講座

    C++ はアセンブリ言語のように軽快であるにもかかわらず、クラスの継承や抽象クラス、オペレータのオーバーロード、そして、テンプレートと、高級言語のプログラミングテクニックを余すところなく駆使できる、すばらしい言語です。あなたもこのすばらしい言語を自由自在に操ってみませんか。 このようにすばらしい C++ ですが、初心者が学び始めるには少し敷居が高いらしく、C++ を学ぶ前に C 言語を学ぼうと考える人が多いようです。C 言語も軽快で単純な良い言語です。しかし、プログラミングの楽しみという意味では C++ とは比べ物になりません。ぜひあなたも、C++ に触れ、そして楽しんでみてください。このサイトの中をひと巡りすることで C++ 初心者が感じるプログラミングの敷居の高さが激減すること請け合いです。このサイトが、あなたの C++ プログラミングライフの一助となりますように。 とはいえ、未だ未熟

  • C++11のrange based forで添字を使えるようにしてみた

    ということで、新年始まって2週間近く立ちましたが、今更ながら、今年最初の記事を書くことにします。 C++の範囲for便利ですよね。 QVector<QVector<int>> array{{0,1},{2,3,4},{5,6,7,8}}; //2次元の動的配列の全要素に安全にアクセス for(auto i:array){ for(auto j:i){ qDebug() << j; } } もう、i++とj++を書き間違えて泣くことは有ない訳です、 でも、ちょ〜っと、気が聞きかない所があります。 イテレータの実装によりますが、基的にアドレス演算しかしないので、 今何回めのループなのか知りたい場合、範囲forは使えません QVector<int> array{0,1,2,3,4,5,6,7,8}; QVector<int> array2(array.count()); for(auto el

  • C++11で始めるマルチスレッドプログラミングその1 ~std::thread事始め~ - すいバカ日誌

    この記事は、C++11におけるマルチスレッドプログラミング入門記事という位置づけで書かれたものです。簡単のため、表現が曖昧になったりしている部分があると思いますが、もっと厳密に知りたいという方はC++の規格を参照してください。 C++11のマルチスレッドライブラリ C++03までは、マルチスレッドプログラミングを行うための言語機能やライブラリが標準で用意されていませんでした。そのため、プログラマはしばしばプラットフォームに依存したコードを書く必要がありました。 しかしC++11から、thread-aware memory modelなどの定義や、マルチスレッドをサポートするための言語機能とライブラリが導入されました。これによって、プログラマは抽象度の高いコードを用いてマルチスレッドプログラミングを行うことが容易になりました。 記事では、事始めとしてstd::threadを用いて簡単なプロ

    C++11で始めるマルチスレッドプログラミングその1 ~std::thread事始め~ - すいバカ日誌
  • GitHub - Golevka/emacs-clang-complete-async: An emacs plugin to complete C and C++ code using libclang

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - Golevka/emacs-clang-complete-async: An emacs plugin to complete C and C++ code using libclang
  • やねうら王 公式サイト

    サイトのメインコンテンツ やねうら王 — 棋力的にトップ集団の将棋ソフトに比肩する将棋ソフト やねうら王オープンソースプロジェクト — やねうら王miniから最新のやねうら王までのソースコードと思考エンジン体 ふかうら王 — Deep Learningを採用した新しい時代の将棋ソフト たけわらべ — 利きだけを理解している新しい感覚の将棋ソフト Stockfish完全解析 — コンピューターチェスの強豪ソフトStockfishの完全解析 将棋電王戦  — 株式会社ドワンゴ主催の将棋電王戦。やねうら王は4年連続出場 コンピューター将棋全般 — コンピューター将棋全般の話題 プロコン — CODEVSなどプログラミングコンテストの話題 なお、この記事のここから下には新着記事が表示されています。

  • C++クラスの書き方が面倒くさい訳 - すたんだーどっ☆あいおーっ!

    Cが全然分からないころの話。 javaのように1クラス1ファイルに書かないのはなんで? メンバがポインタばっかりなのはなんで? という疑問を持ちながらコーディングしてるともやもやして嫌でした。 もやもやがいやなのでjava風に書いていたら当然のように詰まりました。 ポインタじゃなかったらメモリが大変なことになるだろうが! というのは最もなんですけど、じゃ小さいプログラムならありなのか?スマートポインタ使えばいいのか?と言うとそうでもない。 今日書いてみたいのは、クラスは相互参照がめんどくせぇから分割しろ。そして同じ理由でメンバ変数はポインタにしとこうぜ、というお話。 相互参照の解決 AクラスがBクラスを使って、BクラスがAクラスを使う。 こういう状態を相互参照とか相互includeとか言うと思う。 javaは何でもないことだけど、C++はこれを簡単には許してくれない。 相互参照の解決方法に

    C++クラスの書き方が面倒くさい訳 - すたんだーどっ☆あいおーっ!
  • C++ Labyrinth

    オーバーロードは継承できない これは、おそらく、C++ プログラマなら誰しも驚いた経験していることであり、 もし、あなたが未経験であってこの文章を読んで知識を仕入れておいたとしても、 きっといつかは体験して驚くことになるであろう、C++ の一仕様の話である。 いささか仰々しい書き出しになったが、今回の話題は、 「基底クラスと派生クラスで同じ名前の関数が定義されていた場合、 基底クラスの関数は隠されてしまう」という、C++ の仕様のことである。 ここで、「同じ名前なら隠されるのは当り前やんか」と思ったあなたは、 ちょっと読みが甘い。「同じ名前」というのは、文字通り、 「関数名だけが一致している」 ということであって、引数など、 シグネチャを構成する他の要素は違っていても構わないのだ。 例をあげよう。 class Base { public: int foo( int x ); }; clas

  • 将棋プログラムの作り方

    将棋プログラムを作ってみましょう。 お断り:私はC++で書くのが一番速くコードが書けるので、コード例はC++で書いています。(しかも、いきあたりばったりに書いてます…読みづらくてごめんなさい。)内容はそんなに難しくない(…ということもないかも…)ので、他の言語で書くのもそう難しくないと思います。 将棋プログラムの基礎 駒と局面の内部表現を決める ここが実はとてもとてもとても重要なのですが、最初は試しに単純に作ってみましょう。 駒については、歩香桂銀金角飛王とそれぞれの成り駒、そして敵味方の区別が必要です。 敵味方の区別には、Cならビット演算が使えると高速でしょう。 で、ざっくりと駒の内部表現を考えると、 enum KOMAINF { OUT_OF_BOARD = 64, EMPTY = 0, FU = 1, KY = 2, KE = 3, GI = 4, KI = 5, KA = 6, H

  • PNaClでOpenSSLの機能を利用するChrome appsの作り方

    PNaClでOpenSSLの機能を利用するChrome appsの作り方 Written on Nov 3, 2014. Posted in Chrome Native Client ここのところ、PNaClについていろいろと調べてきました。なんで調べていたかというと、自分で作ってるChrome appsの中で、JavaScriptで書くのは非常にしんどい処理を既存のNative codeを呼び出すことで利用して楽したい、というのがあります。特に暗号系の処理は、扱う値の桁数も非常に大きく、もしOpenSSLにある関数で事足りるのであれば、それを利用したいところですよね。こういったことが、PNaClで可能なはず。それを自分でできるように習得したかったということです。まぁ、C++のコードはあまり書いたことがなく、単にC++で何か作ってみたかった、という興味もありますが。 このエントリでは、Op

  • C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the web-client-world! - C++ ときどき ごはん、わりとてぃーぶれいく☆

    C++ Advent Calendar 2012 / 4th day (!) この記事はC++ Advent Calendar 2012の参加記事です ヽ(=´▽`=)ノ 記事の公開と編内容が4th dayのリミットより数時間遅れてしまいました事をお詫び申し上げます。 Native-client vs. HTML5 ; C++ in web-client-world! 諸元 Published: 2012.12.4 By: Usagi Ito <usagi@WonderRabbitProject.net> Environments: (to see the last section of this entry) Abstract 世間ではHTML5が一般にも話題になり始め、徐々に持て囃される様になり、次第に一般にも浸透して来た様な気がする2012年のクリスマスシーズン、 (…中略…)、

    C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the web-client-world! - C++ ときどき ごはん、わりとてぃーぶれいく☆
  • C++ 勉強に使えるサイト 8選 - のんびりしているエンジニアの日記

    皆さんこんにちは お元気ですか。私は さて、今日はC++を勉強するにあたりオススメなサイトをご紹介したいと思います。 ロベールのC++教室 ロベールのC++教室 基的な文法を知るには便利なサイトです。if文や簡単なライブラリからポインタの詳しい使い方などなど掲載されています。 boost C++ Libraries Boost C++ Libraries boostの親玉サイト、ライブラリの一覧やExampleが存在します。 ただ、よくわからないことも多いので、そのときは頑張って探すことをお薦めします。 boost jp Boost逆引きリファレンス - boostjp boostの日コミュニティのサイト 勉強会とかのスケジュールとかもあるので、ぜひぜひ。 (機会があれば参加してみよう) cplusplus.com cplusplus.com - The C++ Resources N

    C++ 勉強に使えるサイト 8選 - のんびりしているエンジニアの日記
  • デザインパターンの骸骨たち

    『デザインパターン』 うんちくできると、かっこよさそうだよね~。でもあんな分厚い読んでもピンとこないし、だいたいオブジェクト指向ってなに?なにが便利なのかよく分からんのだけど。いいじゃんなんでも。できればいいんだよ、できれば。 な~んて、思っていても、なんとなく オブジェクト指向が気になっている システム開発者は、多いのではないでしょうか?かくいう 私もそんな者の一人でした。 しかし、これだけ もてはやされているオブジェクト指向です。 なんか、便利なはずです。 そこで、私は、GOFのデザインパターン[1]を、できるだけシンプルに表現した、小さな小さなプログラム ~デザインパターンの骸骨たち~ を作ってみました。骸骨達 を骨の髄までしゃぶり尽くつくすせば、オブジェクト指向の真髄まで味わうことができるかも。!? 『デザインパターンの骸骨たち(RE-BONE)』 では、内容を大幅に見直し、Ja