タグ

c++に関するtroronのブックマーク (24)

  • C++ template の(部分)?特殊化ができるとき、できないとき

    C++ template の(部分)特殊化ができるとき、できないとき STL はまあ普通に使う、くらいの軟弱な知識で C++ を使っていると、クラス内で関数テンプレートの特殊化をしようとしてコンパイルエラーになって、なんでここで特殊化できないんだよ〜と愚痴を言っていたら、さらに恐ろしいことに、特殊化はできないのに部分特殊化はできる場合に遭遇したりして、 C++ の闇に触れた気分になるのだけど、実はそうでもないという話(少なくとも、ユーザの側から理解するだけなら、ね)。 (部分)特殊化できる条件 ややこしく感じる理由は、特殊化できる条件と、部分特殊化できる条件が全く別だから。実はそんなに複雑ではない。 特殊化できる OK: 名前空間スコープで定義 NG: クラススコープで定義 部分特殊化できる OK: クラステンプレート NG: 関数(⊃メンバ関数)テンプレート 例 template<cla

  • 本当は怖くないムーブセマンティクス - yohhoyの日記(別館)

    この記事はC++ Advent Calendar 2012の15日目にエントリしています。 内容はC++11「ムーブセマンティクス」の入門記事となっています。 もくじ ムーブセマンティクス再考 シンタックス vs. セマンティクス コピー vs. ムーブ ムーブのもつ2つの意味 C++11のムーブセマンティクス対応 auto_ptrからunique_ptrへ auto_ptrの暗い過去 unique_ptrへの移行 std::moveの役割 ムーブセマンティクスを使おう C++11標準ライブラリとムーブ ムーブ"後"の中身は? ムーブを利用して関数を書く (文のみ約9500字) まえがき To move or not to move: that is the question. ― Bjarne Stroustrup, 2010(改)*1 プログラミング言語C++の新しい国際標準規格*2

    本当は怖くないムーブセマンティクス - yohhoyの日記(別館)
  • 最高速のfizzbuzzを実装する話

    この前、Twitterで誰かが「コンパイラ言語でFizzbuzz書くなら、コンパイル時に全ての演算を済ませ、実行コストはI/O命令1個になるように最適化しないと」という話をしていた。いいこと言うな、と思ってスルーしていたのだが、体調不良で頭だけ動いている状態だったのでC++11でトライしてみることに。 案ずるより産むが易しというもので、割と簡単に綺麗に書けた。こんな感じ。 char配列を可変長のテンプレート引数として結合していって、文字列定数を生成するというテクニックは実際に使い所があるかもと思った。最近C++書いてないけど。 #include <cstdio> template <typename LHS, int N> struct numstr { template <char... Args> struct append { typedef typename numstr<LHS,

  • ロベールのC++教室 - 第7章 代入文のリサイクル -

    前回言った通り、宣言文とブロック文以外の文は「式にセミコロンをつけたもの」です。では、代入文はどうなのでしょうか? 代入文を式として利用した場合どうなるのでしょうか? 今回は、その代入文についてのお話です。 では、今回の要点です。 代入式は、代入される変数の代わりに使える。 代入式の値は代入演算された後の値になる。 後置インクリメントは特殊で、代入演算はできず、1増える前の値が使われる。 では、いってみましょう。 先ず、代入文を式にセミコロンをつけたものと考えます。この式を代入式と呼びましょう。例えば、i = 0; の場合は i = 0 が代入式となります。 この代入式は普通の式と同じように使えるのでしょうか? そして、使えるとすればどのようになるのでしょうか? では、代入式を普通の式と同じように使ってみましょう。優先順位が気になるので、代入文はカッコで囲んでおきましょう。 // Assi

    troron
    troron 2014/01/17
  • ロベールのC++教室 - 第6章 コンマ演算子 -

    今まで、いろいろな演算子について話してきました。今回は一風変わった演算子について話してみようと思います。 では、今回の要点です。 <式1>, <式2> の値は <式2> になる。 コンマ演算子は優先順位が異常に低い。 コンマ演算子を使えば複文を単文にできる。 では、いってみましょう。 前回のプログラムの for 文をもう一度見てみましょう。 for(i = 0; i < 8; i++) { if(fscanf(pf1, "%d", &num1) == EOF || fscanf(pf2, "%d", &num2) == EOF) { fputc('\n', pf3); goto LAST; } fprintf(pf3, "%d ", num1 + num2); nNumbers++; } 最後に nNumbers++; というのがありますね。しかしこれ、感覚的には for 文の i++ の

    troron
    troron 2014/01/17
  • Wandbox

    troron
    troron 2013/12/06
    コンパイルが終わらん
  • C++11: Syntax and Feature

    C++11の文法と機能(C++11: Syntax and Feature) Copyright (C) 2013 江添亮. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GN

    troron
    troron 2013/10/28
  • C++ reference - cppreference.com

    Function objects − hash (C++11) Swap − Type operations (C++11) Integer comparison (C++20) pair − tuple (C++11) optional (C++17) expected (C++23) variant (C++17) − any (C++17) String conversions (C++17) Formatting (C++20) bitset − Bit manipulation (C++20) Debugging support (C++26)

    troron
    troron 2013/02/03
  • g++ 4.2.3のバグ?std::mapやstd::pairをメンバ関数のデフォルト引数に書くと怒られる件 - nobu-qの日記

    http://groups.google.co.jp/group/gnu.g++.bug/browse_thread/thread/09f52263bb8562a6 これと同じ。 #include <iostream> #include <map> using namespace std; void f(const map<int, int>& m = map<int, int>()) { } class A { public: A(const map<int, int>& m = map<int, int>()) {} void f(const map<int, int>& m = map<int, int>()) {} }; int main() { }test.cpp:11: error: expected ‘,’ or ‘...’ before ‘>’ token test.cpp

    g++ 4.2.3のバグ?std::mapやstd::pairをメンバ関数のデフォルト引数に書くと怒られる件 - nobu-qの日記
    troron
    troron 2012/02/13
    お助かり
  • how do you declare and use a static constant array inside a class | Bytes

    troron
    troron 2012/02/12
  • Google C++スタイルガイド 日本語訳

    Text Drop 翻訳、プログラミング、写真、カメラなどについて書いてます。スタイルガイド/コーディング規約やチートシートなど、ちょっと便利なものを翻訳しています。 TEXTdropでは、C++プログラマーも利用できるパワフルな機能を搭載。C++のコードを書く際に行う手順や避けておきたい工程などを詳しく説明しています。コードスタイルラインの日語版では、日語訳やJ P Yへの換金もサポート。話題性があるオンラインカジノ 日円変換や入金の際のバグにも対応しています。統一性のあるコードを書くためのポイントや規約の種類を参考にする事ができます。

    troron
    troron 2012/02/10
  • Stroustrup: C++ Style and Technique FAQ 日本語訳

    Bjarne StroustrupによるC++のスタイルとテクニックに関するFAQ オリジナル: Bjarne Stroustrup's C++ Style and Technique FAQ ここにまとめられているのは、私がよく尋ねられるC++のスタイルとテクニックに 関する質問です。もしよりよい質問や回答に対するコメントがあれば、遠慮なく私に メール(bs@research.att.com)でお知らせください。なお、ホームページを改善する ために、私はあまり時間を割けないということを心に留めておいてください。 より一般的な質問は、一般的なFAQを 参照してください。 用語や概念については、C++用語解説を 参照してください。 この文書の内容は、質問と回答をまとめただけのものであるということに注意して ください。よい教科書にみられるような、注意深く選ばれた例題と解説の代わりになる もので

  • http://www.hiroshima-cu.ac.jp/japanese/IPC/hunet99/sun/WorkShop/ja/html_docs/c-plusplus/c++_lrm/Chapter4.doc.html

    troron
    troron 2012/02/06
  • iostream の仕組み

    (このコンテンツはメールマガジンの STL & iostream 入門に手を加えたものです。「 STL と iostream が使えるかのチェック」等はメールマガジンの方のページをご覧ください) STL がそうだったように、 iostream も非常に高い「カスタマイズ性」を持っています。「ないものは作ればいい」に強く応えてくれます。ですが、そのためにはまず iostream 全体の構造を知っておく必要があります。 iostream のクラスは、だいたい3つのグループに分かれます。これは「ストリームクラス」「フォーマットクラス」「バッファクラス」です。 これまで紹介してきた std::strstream などのクラスは、すべて最初の「ストリームクラス」に属するクラスです。普段使用する場合(つまりカスタマイズする必要がない場合)にはこのストリームクラスしかお世話にならないというわけです。 こ

    troron
    troron 2012/02/05
  • 2004-07-16

    >>d金魚さん(で良いのかな?名前間違っていたら当にすいません) そのTest_VectorSpeedの実装だとvbの前1MBに0が詰まった後,後ろ1MBにdataが詰まると思います.なので,多分1回ぐらいvectorの内部バッファの再配置(とそれに伴うdelete & new)が起きるので,その分のoverheadが出ていると思います.ただ,それを除いても(resizeではなくてreserveを使っても)明示的なfor文とmemcpyでは決定的な差が残ると思います. ということで,入力がPODの配列の場合,std::vectorが一時バッファとして優秀かどうか,特にmemcpyと比較してどうか?ということを考えてみました. あらかじめ,2つ断っておきます. 第1に,以下の議論はコンテナとアルゴリズムの実装に依存する部分が大きいです.ですが,恐らく多くのC++の実装で正しいかと思います.

    2004-07-16
    troron
    troron 2012/02/05
  • ロベールのC++教室 - 第77章 リテラル文字列 -

    troron
    troron 2011/09/26
    文字列リテラルは静的なので戻り値に使える
  • std::stringstream再考 « Stop Making Sense

    August 2011 (1) July 2011 (1) June 2011 (2) April 2011 (2) March 2011 (2) February 2011 (2) January 2011 (6) December 2010 (6) November 2010 (5) October 2010 (8) September 2010 (2) August 2010 (3) July 2010 (9) June 2010 (4) March 2010 (1) February 2010 (7) January 2010 (2) std::stringstreamとは C++の標準ライブラリ(STL)で定義されている文字列ストリームで、色々な型を文字列化する際に重宝するクラスです。 JavaのStringBufferクラスに似ています。 まず、簡単な使い方から見てみましょう

    troron
    troron 2011/07/11
  • C++リファレンス - cppreference.com

    スマートポインタとアロケータ 日付と時間 関数オブジェクト  −  hash (C++11) 文字列変換 (C++17) ユーティリティ関数 pair  − tuple (C++11) optional (C++17)  −  any (C++17) variant (C++17)  −  format (C++20)

    troron
    troron 2011/04/15
  • cplusplus.com - The C++ resources network

    Tutorials C++ Language: Learn this versatile and powerful programming language. Includes detailed explanations of pointers, functions, classes and templates, among others... Reference Description of the most important classes, functions and objects of the Standard Language Library, with descriptive fully-functional short programs as examples. Browse the C++ Reference Articles User-contributed arti

    troron
    troron 2011/04/15
  • 微分積分

    静岡理工科大学情報学部コンピュータシステム学科菅沼研究室のページです.主として,プログラミング言語( HTML,C/C++, Java, JavaScript, PHP, HTML,VB,C# ),及び,システムエンジニアとしての基礎知識(数学,オペレーションズ・リサーチやシステム工学関連の手法)を扱っています.

    troron
    troron 2011/04/15
    仕事中暇な時など。。