タグ

C++に関するtatejimaruのブックマーク (38)

  • 巻末: C++14の新機能

    巻末: C++14の新機能 C++14は、2014年に制定されたC++11の次のC++標準規格である。C++14の位置づけとしてはマイナーアップデートで、新機能の追加は少ない。 二進数リテラル(binary literal) 二進数リテラルは、整数リテラルである。 int a = 0b1011 ; // 11 inb b = 0b10000000 ; // 128 プレフィクス0b、もしくは0Bに続いて'1'か'0'が続く整数リテラルは、二進数リテラルである。 二進数リテラルは、浮動小数点数リテラルではない。 double d = 0b111.11 ; // エラー 整数リテラルのサフィックスは、二進数リテラルにも適用できる。 auto a = 0b0u ; // unsigned int auto b = 0b0l ; // long プログラミングで整数を扱うときに、二進数で考えたい場

  • TopCoderから学ぶ美しいマクロや型宣言 C++ - peroon's diary

    TopCoderというプログラミングコンテストで 他人のコードから発見した、美しいマクロや 型宣言を紹介します。 これを導入することで、C++のコードが短くなり、 早くコーディングすることができます。 ※すべてのTopCoder参加者がマクロなどをテンプレートと して用意しているわけではありません。 マクロなどを定義している人は半分より少ないようです。 TopCoderの他人のコードを参考に、 マクロやtypedefによる型宣言をまとめました。 コードの全体はこのようになっています。 (あとで個別にコメントします) //include //------------------------------------------ #include <vector> #include <list> #include <map> #include <set> #include <deque> #in

    TopCoderから学ぶ美しいマクロや型宣言 C++ - peroon's diary
    tatejimaru
    tatejimaru 2016/02/22
    こういうのを探していた
  • Range を使おう - iorate's blog

    これは C++11 Advent Calendar 2011 の参加記事 (15日目) です. この記事では「Iterator ではなく Range を使おう」という話をします.既に何度も言われている話ではありますが,私も一度書いてみたかったのでこの機会に書きます.でもそんなに新しいことは言わないと思います. 話の流れとしては,従来の Iterator にはこんな欠点が → それ Range ならうまく書けるよ → さらに Range 使ってこんなこともできるよ → C++11 での Range という感じになります. 従来の Iterator の問題点 Iterator は STL の主要なコンセプトで,Container と Algorithm を橋渡しする役割を持っています. std::vector<int> v = { 8, 4, 3, 7, 6, 5, 2, 1 }; std::

    Range を使おう - iorate's blog
  • C++11 の乱数ライブラリ <random> - Siv3D 開発ブログ

    C++11 では、新しい乱数ライブラリのヘッダ <random> が追加されました。 一様にランダムな整数を生成する「乱数生成エンジン」と、値を特定の方法で分布させる「分布生成器」が用意されています。 乱数生成エンジンは 線形合同法 メルセンヌ・ツイスター Lagged Fibonacci 法 ハードウェアエントロピーソース(時刻や CPU カウンター、I/O の状態など大量の低レベルシステム情報)を利用した非決定論的(予測不可能)な乱数生成 の 4 種類が実装されています。非決定論的な乱数生成以外の手法では、初期シードから擬似乱数列を生成します。 分布生成器は 一様分布 正規分布 ベルヌーイ分布 ポアソン分布 をはじめ多数のアルゴリズムが実装されています。 非決定論的な乱数生成エンジン std::random_device を使ってランダムな値を出力してみましょう。プログラムを実行するた

    C++11 の乱数ライブラリ <random> - Siv3D 開発ブログ
  • blog-entry-4.html

    個人的な忘備録 ■C++WindowsSDK の時、初期状態ではXPでは動作不可なexeがビルドされる問題(Vista以上では動作する) プロジェクトのプロパティ>構成プロパティ>全般 を選び、その中の「プラットフォーム ツールセット」を 「Visual Studio 2013 (v120)」から「Visual Studio 2013 - Windows XP (v120_xp)」に変える こうすると普通はXPでも起動可能なexeになる これでもダメな時は、構成プロパティ>リンカー>システムのサブシステムを参照 ここが空欄だと、XPで動かないらしい。Windowsを選択する プロジェクト作成の際に、空のプロジェクトだと空欄になってるらしい。Win32プロジェクトを選択してるとWindowsが最初から入ってる ■ビルドしたexeをVisualStudioがないPCで実行した時、「msvcp

    tatejimaru
    tatejimaru 2014/12/28
    プロジェクト名の変更方法
  • 連想配列 std::unordered_map を使用する - C++ プログラミング

    C++11 では、キーと値をセットで管理する連想配列を簡単に利用できる std::unordered_map<> というテンプレートクラスが用意されています。 これを使用することで、キーに対する値を追加したり削除したり、挿入したりといったことが簡単にできます。テンプレートクラスなので、任意のデータ型を扱えるのも便利です。 ここでは、その std::unordered_map<> の基的な使い方について見て行きます。 ちなみに、std::unordered_map<> は、キーを登録した順番とは関係なく(ハッシュを使って)格納するタイプのものになります。 キーを順番通りに(キーと値を辞書的順序で)格納したい場合は <map> ヘッダーに定義されている std::map<> を使用します。std::map<> と std::unordered_map<> の使い方は基的に同じです。 また、

  • オンライン C++ コンパイラ - WCE blog

    プログラミング班 3 年 @Reputeless です。 C++ のコードを書きたいけど、手元に GCC や Visual Studio がない! Visual Studio が C++11 に全然対応していなくてつらい。でも GCC をインストールするのは面倒・・・ そんなとき、オンラインで C++ のコードをコンパイル、実行してくれる Web サービスが便利です。 この記事では C++ に対応しているオンラインコンパイラを 4 つ紹介します。 対応機能は 2013 年 3 月 15 日時点のものです。 ideone.com 60 以上の言語に対応するオンラインコンパイラです。 知名度が高く、Twitter などでコードをシェアする際によく使われます。 コンパイラのバージョンの更新はやや遅めです。 以前は Boost に対応していましたが、最近の更新で消えてしまいました。復活が望まれます

    オンライン C++ コンパイラ - WCE blog
  • TeXでソースコードを埋め込む - Qiita

    参考になったサイト mytexpert Listing jlisting.styのインストール texにCのソースコードを埋め込む OSはUbuntu12.04です TeXのレポートなどにソースコードを埋め込むときには,listing.styやjlisting.styというのを使うと良いみたいです. 以下のディレクトリを確認して,なかったらダウンロードして放り込みます.ディレクトリは適当に読み替えてください.

    TeXでソースコードを埋め込む - Qiita
  • C++0x - 初期化子リスト(Initializer List) - Faith and Brave - C++で遊ぼう

    C++0xでは、ユーザー定義クラスで配列のような初期化ができるようになります vector<int> v = {3, 1, 4}; Bjarne氏曰く「なんで今までできなかったのかわからない」 戻り値に初期化子リスト vector<int> create_vector() { return {3, 1, 4}; } 引数に初期化子リスト void something(const vector<int>& v) { ... } something( {3, 1, 4} ); mapの要素 map<string, int> dict = { {"Akira", 22}, {"Johnny", 38}, {"Millia", 16} }; 初期化子リストをユーザー定義クラスで使用するには std::initializer_listを受け取るコンストラクタ(や代入演算子)を用意します。 templ

    C++0x - 初期化子リスト(Initializer List) - Faith and Brave - C++で遊ぼう
    tatejimaru
    tatejimaru 2014/11/16
    Bjarne氏曰く「なんで今までできなかったのかわからない」
  • メンバ変数(インスタンス変数)の命名 - 神様なんて信じない僕らのために

    職場で話題になったこと。 m_value mValue this.value(self.value) _value value_ value と色々あるわけですが、 世の中では 「m_ or mでメンバである事を明示する派」(m派) 「mは冗長だから_だけで表すよ派」(接頭辞アンダースコア派=マーチン・ファウラー派) 「言語機能に乗っ取ってthisつけて表すよ派」(this派) 「前置_は言語処理系に予約されている(c/c++)ので後置_にするよ派」(接尾辞アンダースコア派) id:nattowさんの指摘で追記。 「つけないと区別できないのは設計がまずいから俺はつけないよ、てか接頭辞も接尾辞もきもいよ派」(設計上正しければ区別必要ないよ派) がいるような気がします。 (Rubyの@派とかは知らぬ) で、割と最近「後置_派」(C++ Coding Standardsの影響)になったんですが、

    メンバ変数(インスタンス変数)の命名 - 神様なんて信じない僕らのために
  • C++ でのラムダ式の使用について

  • C++ とのつきあい方

    いきなりでなんですが、このページは、 C++の入門記事ではありません。 C++ってのもいろいろと不自由なところのある言語でして、それをささやかながら改善しようという試みです。 もくじ C++のソースファイルの拡張子って、いろいろですねえ なんで同じことを2回ずつ書かなくちゃいけないの インライン函数の存在意義 仕様文書を抽出する 仕様文書を抽出する(承前) コンパイラーの検査をかいくぐる コンパイラーの検査をかいくぐる(承前) 実行時のクラス判定 「メンバー」か「メンバ」か、それとも「面罵」か 名前が埋もれていく 開発量マイナス7000行 トレースで動作を探る 贅肉を落としてスリムに Cの構造体をC++のクラスにみたてる 続・実行時のクラス判定 STLを使おう HTMLで書くヘルプ 読み手のための翻訳とは エラー対応は難しい 関連情報 C++のコーディング基準の提案。 すべて賛成できるとい

  • 第14講 フリーストア配列とCLI配列 第1話 配列の種類

  • C++のクラスをマスターしよう(前編)(1/5) - @IT

    書籍転載 文法からはじめるプログラミング言語Microsoft Visual C++入門 C++のクラスをマスターしよう(前編) ―― 第10章 クラス~オブジェクト指向プログラミング(前編) ―― WINGSプロジェクト 矢吹 太朗(監修 山田 祥寛) 2010/05/19 コーナーは、日経BPソフトプレス発行の書籍『文法からはじめるプログラミング言語Microsoft Visual C++入門』の中から、特にInsider.NET読者に有用だと考えられる章や個所をInsider.NET編集部が選び、同社の許可を得て転載したものです。基的に元の文章をそのまま転載していますが、レイアウト上の理由などで文章の記述を変更している部分(例:「上の図」など)や、図の位置などをサイトのデザインに合わせている部分が若干ありますので、ご了承ください。『文法からはじめるプログラミング言語Micros

  • Programming Place Plus

    Programming Place Plus へようこそ。 当サイトはプログラミングに関する学習サイトで、現在はC言語と C++ を扱っています。 プログラミングの入門~中級(自分でプログラミングできるレベル)までをサポートすることを目指して、コンテンツを作成、更新しています。 最近行われた更新を、ここから確認できます。 お知らせ ’2023/4/30 次月から、参考書籍にを追加するタイミングを、最終土曜日に変更します ’2023/4/23 「セール情報」のページを追加しました 参考書籍 で紹介しているを中心に、お買い得情報を取り上げます(週1回程度の更新予定) ’2023/1/29 オフライン版を更新しました ’2022/6/12 「今後の予定」を更新しました コンテンツ Programming Place Plus のコンテンツです。最近行われた更新はこちら。 以下の検索窓から、す

    Programming Place Plus
  • コマンド「make」初心者向けメモ(Hishidama's make-command Memo)

    「目的のファイル」と「ソースファイル群」のファイルの日付を比べて、「ソースファイル」の方が新しければ、「生成方法」に書かれた内容が実行される。 某antでは「makefileの文法を覚えるのが面倒」なんて言ってるけど、こっちの方がよほどすっきりしているような気がするけどなー。 1つのファイルから1つのファイルを生成する例 makefile: a.out: test.c gcc -O test.c -o a.out これにより、test.cがa.outより新しいか、もしくはa.outが存在しない場合に「gcc -O test.c -o a.out」が実行されてa.outが出来る。 2つのファイルから1つのファイルを生成する例 makefile: all: a.out ←最終的に生成したいファイル a.out: main.o sub.o ←a.outを作るのに直接必要なファイル gcc mai

  • C言語FAQ / C++言語FAQ【BohYoh.com】

    プログラミング言語であるC言語およびC++言語に関して、よく聞かれる125の質問(FAQ)と、その解答です。

  • C++ の iostream フォーマット指定早見表

    C++ の iostream ってなぜ printf() ほどメジャーじゃないんだろう。 << がキモいから? iostream の書式指定まわりが覚えづらいから?それでも、できれば iostream でスマートに書いてみたいものです。 C (stdio) / C++ (iostream) 出力フォーマット指定対応表 そこで、 C (stdio) と C++ (iostream) の出力フォーマット指定の対応表を作ってみました。「printf()ではこう書くけど、 iostream ではどうやって書くんだっけ?」みたいなとき用。 C (stdio) C++ (iostream) 出力結果

  • ポインターについて理解を深めよう

    値渡しと参照渡し 関数へオブジェクトを渡す方法には、値渡しと参照渡しの2種類があります。値渡しは、オブジェクトの値が複製(コピー)され関数へ渡されます。プログラミング言語Cにおける関数呼び出しではすべて値渡しになります。なお、ポインターを渡すことでオブジェクトの参照を渡すことができるため、参照渡しとほぼ同じことが実現できます。 それぞれの渡し方による関数呼び出しの方法を説明する前に、値のコピーについて少し詳しくみてみましょう。Cにおける値渡しでは、実引数(関数呼び出しの引数)の値が仮引数(関数宣言の引数)に代入されます。 はじめに、int型のオブジェクトaとbを定義してみます。

    ポインターについて理解を深めよう
  • 11-C言語で文字列を扱う

    再確認、"ABC" さて、「"ABC"」というのが文中に出てくると、一体どういう意味をなすのか。これは重要です。前にも言いましたが、C言語には文字列という型はありません。それじゃぁ一体、文法上どういう意味になるのでしょうか。 じつはプログラム中に「"ABC"」が出てくると、これ全体がアドレスの値になります。何のアドレスの値かというと、'A', 'B', 'C', '\0' と連続してメモリ上に置かれた時の'A'へのポインタです。メモリ上のどこに置かれるかは分かりません、これはコンパイラやOSがうまく配置してくれます。 'A'はchar型、"ABC"は'A'のアドレス これを頭の中で何度も唱えてください。すると、こんなことができると分かるはずです。 char *s; s = "ABC"; この例は、char型へのポインタ変数sを作って、そいつにどこかに用意された"ABC"の先頭アドレスを代入