タグ

C++に関するzetamattaのブックマーク (135)

  • std::unordered_map のキーに独自の型を使用する - Qiita

    C++11 で追加された std::unordered_map は、連想配列を扱うことができる。 以前からある std::map では、キーとして扱えることができるのは 順序関係が定義されたオブジェクトのみである。一方、 std::unordered_map では順序関係が定義されていキーを使うことができ、純粋な連想配列(ハッシュテーブル)として使うことができる。 ただし、 std::unordered_map のキーはハッシュ値へ変換できる必要がある。多くの標準型のように std::hash() でハッシュ値への変換が定義されている型はそのままキーに使うことができるが、自分で定義した型など変換が定義されていない型をキーとして使用する場合はハッシュ計算を行う関数を自分で用意する必要がある。 このハッシュ関数を定義するには、 std::hash() を特殊化する方法と、関数オブジェクトを作成

    std::unordered_map のキーに独自の型を使用する - Qiita
    zetamatta
    zetamatta 2017/05/25
    std::unodered_map<キー型,値の型,ハッシュ関数オブジェクト> で宣言する
  • C++/CLIについてのよくある誤解 - デ-mk6

    以前にも書いたような気がしますが、もう一度書きます。C++/CLI(仕様の邦訳)は、.netからC++やその他ネイティブコードのライブラリを楽に使えるようにするためと、そのための作業を楽に行うための言語です。「.netで使えるC++」ではありません。そういうことを言う人は悉くこの言語の厳つい顎で頭を砕かれ、手足をもがれて、腸をらい千切られ死にます。それが摂理なのです。あらがえません。C++/CLIは大きく分けてC++と、C++風構文を持つ何か.netっぽい言語(ここでは仮に「Cヰ」と呼びましょう)からなる、キメラです。二つの言語のコードは一つのファイルに混ぜて書くことができます。C++の部分はそのままC++です。何も違いはありません。GCもありません。ありませんが.netのGCにネイティブオブジェクト(要するにC++で作ったオブジェクト)を通知して管理させる方法はあります。interfa

    C++/CLIについてのよくある誤解 - デ-mk6
  • Creating a Child Process with Redirected Input and Output - Win32 apps

    zetamatta
    zetamatta 2017/05/06
    I/Oがリダイレクトされている子プロセスの作成(Windows)
  • プリコンパイル済みヘッダー - VisualC++ - C++ ClockUpMemo

  • すずめのおどりあし ゲイツ語

    zetamatta
    zetamatta 2017/02/06
    C++/CLI で、デストラクタがあるグローバルスコープな変数や static メンバ変数があると、アプリ終了時に「0xC0020001: その文字列結合は無効です。」という例外が飛ぶ
  • #Anthony Calandra / モダンC++の機能 | POSTD

    (注:2017/10/25、いただいたフィードバックを元に翻訳を修正いたしました。修正内容については、 こちら を参照ください。) (注:2017/02/07、タグが誤っていたので修正いたしました。) C++11/14/17 概要 C++11/14/17に関する記述や例の多くは、様々なリソース(詳しくは謝辞の項目をご覧ください)を参考にしており、それらを自分の言葉でまとめてみました。 C++17には、以下の新しい言語機能が導入されています。 クラステンプレートに対するテンプレート引数の推論 autoによる非型テンプレートパラメータの宣言 フォールド式 かっこ付き初期化リストを持つauto推論の新しい規則 constexprラムダ インライン変数 入れ子になった名前空間 構造化されたバインディング 初期化子によるステートメントの選択 constexpr if C++17には、以下の新しいライ

    #Anthony Calandra / モダンC++の機能 | POSTD
  • ツイッターで出題した未定義問題のお詫びと調査と解説について - paiza times

    Photo by Alan Becker Capuyá 青木です。 先日、paizaのツイッターアカウント(@paiza_official)で出題した四択問題について、皆様からたくさんのご指摘・ご批判をいただいたので、その経緯と結論をお伝えします。 次のような問題を考えて出題しました。 int i = 0; のときに評価値が1になるのは— paiza[パイザ] (@paiza_official) 2016年12月26日 【補足】C言語,C++,Javaを想定しています— paiza[パイザ] (@paiza_official) 2016年12月26日 当初は、それぞれの評価値は順に2, 3, 1, 2となり、3つめの"i++ + i++"の選択肢が答えとなることを想定していました。 ですが、しばらくすると、次のようなリプライやツイートをいただきました。 全部C(たぶんC++/Javaも)だ

    ツイッターで出題した未定義問題のお詫びと調査と解説について - paiza times
    zetamatta
    zetamatta 2016/12/29
    「想定言語はJavaです」などと、当初、想定してなかったのに想定していたなどと偽るのはよくないな
  • tricklib.com

    This domain may be for sale!

    zetamatta
    zetamatta 2016/12/15
    曰く「簡潔かつ乱暴に説明すると、このモジュールは printf デバッギングを簡単且つゴージャスに行う為のものです」
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    zetamatta
    zetamatta 2016/11/15
    reinterpret_castだけ覚えてなかったんだけど「最も危険なキャスト」ってことなら、別に覚えなくてもよいようだ
  • freeml - 無料で簡単!携帯対応!メーリングリストを楽しもう!

    住まい 住宅ローン 引越し 暮らし 電気・ガス インターネット ウォーターサーバー 将来に備える 不動産投資 学資保険 投資信託 積立NISA ライフスタイル お酒 グルメ ビューティー アウトドア freeml(フリーエムエル)は、「時代と生活の変化」に対し、「free & meaningful life」のコンセプトのもと、 「新しい生活をはじめる羅針盤」となるような情報メディアを目指しております。「住む場所を探し」「生活インフラを整え」「将来の準備をする」… 生活の中には多くの選択肢が存在し、ひとつひとつの選択の積み重ねによって、よりfree(開放的)でmeaningful(有意義)な生活が形成されていきます。専門家の方々のご協力を交えた当サービスの情報が、届いた方の「よりお得な」「より自分にあった」「より納得のいく」選択に繋がればと願っております。

    freeml - 無料で簡単!携帯対応!メーリングリストを楽しもう!
    zetamatta
    zetamatta 2016/10/14
    比較関数を差し替えちゃうという方法があるのか
  • WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD

    Webアプリにリアルタイムの双方向通信が必要な場合、WebSocketを選ぶのは自然なことだと思います。では、どのツールでWebSocketサーバを構築すべきでしょうか。パフォーマンスは重要ですが、開発のプロセスも見過ごしてはなりません。パフォーマンスを基準にするだけでなく、開発のしやすさも考慮に入れるべきでしょう。今回の大合戦では、Clojure、C++、Elixir、Go、NodeJS、Rubyのそれぞれの言語によって慣用的な手法で実装されたシンプルなWebSocketサーバを比較したいと思います。 テスト内容 サーバに実装するのは、 echo と broadcast の2つのメッセージのみを扱う非常に単純なプロトコルです。echoは送信クライアントに返され、ブロードキャストは全ての接続クライアントに送信されます。そしてブロードキャストが完了すると、結果メッセージが送信者に返されます。

    WebSocket大合戦:Clojure、C++、Elixir、Go、NodeJS、Ruby | POSTD
  • C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD

    私は多くの小規模プロジェクトで Make を使ってきましたが、より大きな規模のプロジェクトになると、それは非常にうんざりするようなものでした。最近までは、自分のビルドシステムに行いたいことが4つあったのですが、Makeでの方法が分かりませんでした。 out-of-sourceビルド(オブジェクトファイルが、ソースとは分離されたディレクトリにダンプ出力されます) 自動生成される(かつ正確!)ヘッダの依存関係 オブジェクト/ソースファイルのリストの自動的な決定 インクルードディレクトリのフラグの自動生成 以下にこれらの全てを行える、C、C++、およびアセンブリで動作するシンプルなMakefileを紹介します。 MAKEFILE TARGET_EXEC ?= a.out BUILD_DIR ?= ./build SRC_DIRS ?= ./src SRCS := $(shell find $(S

    C/C++中規模プロジェクトのための超シンプルなMakefile | POSTD
  • C90, C99, C11, C++98, C++11で異なる動作をするコード | POSTD

    (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) C言語の規格のリビジョン間には微妙な違いがありますが、このことを利用して「C90、C99、C11のどれとしてコンパイルされたかどうかにより、違う挙動をする」というプログラムを作ることが可能です。同様に、C++はほぼC言語の上位互換ですが、C言語とC++で違った結果を生み出すプログラムも存在します。 これは2015年の International Obfuscated C Code Contest (難読Cコード・国際コンテスト)への Don Yangの投稿 において、 C89、C99、C11、C++98、C11のどれとしてコンパイルされるかによって異なる出力を生成するプログラムを作成するのに使われています。C90の場合は、以下のような星形を出力します。 **************************

    C90, C99, C11, C++98, C++11で異なる動作をするコード | POSTD
  • Big Sky :: ODBC 接続なアプリケーションの開発が楽になる C++ ライブラリ nanodbc

    WindowsC++ を使い、データベースの接続先を選ばないアプリケーションを書くのであれば ODBC 接続が一つの選択肢になります。しかし ODBC 接続のアプリケーションを書くのは非常に骨の折れる仕事です。 データの取得 - eternalwindows.jp http://eternalwindows.jp/windevelop/odbc/odbc05.html SQLAllocHandle によるハンドルの作成を事ある毎に行わなければなりません。そんな ODBC を使ったアプリケーションの開発を楽にしてくれそうなのが nanodbc です。 nanodbc A small C++ wrapper for the native C ODBC API. https://lexicalunit.github.io/nanodbc/ Windows で ODBC のシステムDSNに「

    Big Sky :: ODBC 接続なアプリケーションの開発が楽になる C++ ライブラリ nanodbc
  • C++11メモ @ std::to_stringで数値から文字列に変換 - ラーメンは味噌汁

    2013-09-05 C++11メモ @ std::to_stringで数値から文字列に変換 C++11 std::to_stringとは 数値から文字列の変換が簡単に 今までstd::stringstreamを使って数値から文字列に変換していましたがstd::to_stringで簡単に変換できるようになりました。むしろなぜ今まで無かったのか。 // 旧 int val = 10; std::stringstream ss; ss << val; std::string str = ss.str(); // "10" // 新 int val = 10; std::string str = std::to_string(val); // "10" 組み込みの数値型は全てオーバーロードされています。 string to_string(int); string to_string(unsign

    C++11メモ @ std::to_stringで数値から文字列に変換 - ラーメンは味噌汁
    zetamatta
    zetamatta 2016/05/13
    そんなのもあるのか!
  • リファレンス - cpprefjp C++日本語リファレンス

    &&に対する別名andのような、各種演算子に対するマクロを定義する。 ただしC++ではこれらの別名はキーワードとして定義されるため、このヘッダでは何も定義されない。

  • C++のコンパイルとリンクがあまりに遅いのでカッとなって原因と対策を調べてみた - Qiita

    はじめに 美しく素晴らしいプログラミング言語が数多く存在する中、未だC++を使ってる業界は少なくなく、おそらく多くの人がそのコンパイル&リンクの遅さにイライラしていると思います。 ただでさえ遅いのに、C++様は僕達をあざ笑うかのように、リリースに近づけば近づくほどソースコード量の増大によってコンパイル&リンク時間も増えていきます。 プロジェクト末期は、溢れかえったタスクをどうにか消化するために少しでもコーディングに時間を割く必要があるのに・・・くそっorz というわけでここではそんな不幸なプログラマを減らすためにも、僕の知る限りのコンパイル&リンク時間を減らす方法を書いてみようかと思います。 まぁ高性能PCや、インクレディビルドの購入が可能であればこんな苦労をしなくても済むかも知れませんが。。。 そもそも、コンパイル&リンクが遅くなると何がイケないの? 単純に実装→確認に時間がかかると、実

    C++のコンパイルとリンクがあまりに遅いのでカッとなって原因と対策を調べてみた - Qiita
    zetamatta
    zetamatta 2016/02/15
    これだったのかーーーー!(プリコンパイルヘッダの設定がおかしかった)
  • GitHub - rttrorg/rttr: C++ Reflection Library

    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 - rttrorg/rttr: C++ Reflection Library
    zetamatta
    zetamatta 2016/02/01
    MITライセンス・VisualStudio 2013,2015Ok
  • vectorの指定したiteratorの要素番号を取得する - My Life as a Mock Quant

    これも良く忘れるのでメモん。例えば最大の要素自体はmax_elementで取得できるんだけど、それのindex番号が欲しい時の書き方。iteratorの初めとのdistanceを取ればよい。別に最大要素のiteratorじゃなくても良くて適当なiteratorとのdistanceしてやればいい。 #include <iostream> #include <vector> #include <string> #include <algorithm> int main() { std::vector<int> x; x.push_back(3); x.push_back(8); x.push_back(1); x.push_back(2); std::vector<int>::iterator iter = std::max_element(x.begin(), x.end()); size_

    vectorの指定したiteratorの要素番号を取得する - My Life as a Mock Quant
    zetamatta
    zetamatta 2016/01/21
    なるほど「std::distance(x.begin(), iter);」とすればよいのか
  • 範囲for文を自作クラスで使う - C++と色々

    範囲for文とは C++11に範囲for文がある。VisualStudioでは2012から使えるようになった。 これは、STLのコンテナや、組み込み配列をfor文で最初から最後までの要素を処理する時に、従来のfor文でいちいち「最初から、終わりまで」という範囲を書かなくて済むというもの。 例 #include <iostream> int main() { int a[3] = {1, 2, 3}; //今まで(C++03) : 配列の範囲を指定しなければならなかった for(int i = 0; i < 3; ++i) { std::cout << a[i] << std::endl; } //範囲for文(C++11) : 配列の最初から最後まで操作することが自明 for(int it : a) { std::cout << it << std::endl; } } この例でイメージは

    範囲for文を自作クラスで使う - C++と色々