タグ

C++に関するkamei_rioのブックマーク (18)

  • C++17では非推奨だったbool型に対するインクリメント演算子の利用が不可能に | スラド デベロッパー

    C++言語の新標準規格である「C++17」では、bool型に対する++演算子が利用できなくなるそうだ(cpprefjp - C++語リファレンス)。今まではbool型の変数に対し++演算子を適用すると、その変数の値をtrueにするという仕様となっていた。 なお、C言語にはbool型が存在しないため、int型をbool型の代用として使用することが良くあった。この場合、C++の仕様と同様に++演算子を適用するとその値は必ず1以上、つまりtrueになるように見える。しかし、変数の値がint型に格納できる最大値(たとばintが8ビットの場合255)になっていた場合、++演算子を適用するとオーバーフローが発生してその値は0、つまりfalseになってしまうという問題があった。 cpprefjp - C++語リファレンスによると、放射線療法機器「セラック25」ではこのバグが原因で死者を出す事故が

    C++17では非推奨だったbool型に対するインクリメント演算子の利用が不可能に | スラド デベロッパー
    kamei_rio
    kamei_rio 2017/07/22
    そりゃあ真面目に粛清すると不可能になるわな
  • 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
  • C++erを簡易的にレベル分けすることで初心者詐欺を減らそうという試み - Qiita

    はじめに @takeokunn そういや私の昨日のツイートたどってみ、C++初心者(boost.asioが使えないとは言っていない)の人とQiitaでやりとりしてたから — yumetodo-C++erだけど化学科 (@yumetodo) 2016年5月3日 @yumetodo だからC++erの初心者は初心者じゃないんだよ!!!!!!!!!!!!! だからC++er嫌いなんだよ!!!!!!!! — たけてぃ (@takeokunn) 2016年5月3日 @takeokunn 当人も「そろそろ中級者かな」 と言ってた 因みに C初心者 < C++初学者 < C++入門者 < C++初心者 < C++規格書リーディング初心者 < C++中級者 < C++規格書リーディング中級者 < C++上級者 < C++規格書クラッカー — yumetodo-C++erだけど化学科 (@yumetodo)

    C++erを簡易的にレベル分けすることで初心者詐欺を減らそうという試み - Qiita
    kamei_rio
    kamei_rio 2016/05/13
    ここにコンパイラとか64bitとかワイド文字列を(意味もなく複雑にするために)加えて魔境にすれば、もっとそれっぽくなるのでは
  • 【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)

    私はC++歴3年の学生趣味プログラマーです。 「C++はなぜヘッダと実装を分けなくてはならないのか/そもそも当に分けなければならないのか」という質問です。 C++といえば、ヘッダー部と実装部を.hファイルと.cppファイルに分けることが一般的とされている言語ですが、 これは同じオブジェクト指向言語のC#やJavaにはない特徴です。 そのせいでC++使いたちは今日もcppファイルとhファイルを行ったり来たりしながらコーディングする羽目になっています。(そしてVS使いはF12とCtrl+-を得意気に連打しています。) 私にとってもそれが当たり前になって久しいですが、 時々C++を学び始めたばかりの後輩から「なぜヘッダファイルに実装を書いてはならないのか」「なぜC++は二度も同じコードを書くことを強いるのか」と質問を受けます。 私はそのたびに「実装の隠蔽化」とか「循環参照の危険が云々」とか「そ

    【C++】なぜヘッダと実装はわけるべきなのでしょうか(.hに実装を書くことは邪道か)
  • C/C++を高速化する10のコーディングテクニック

    Guides, HowTos and Tips for Technology Geeks - The Geek Stuff The Geek Stuffは「10 Tips for C and C++ Performance Improvement Code Optimization」において、C/C++のコードを高速化するための10のティップスを紹介した。プログラミング言語の学習当初はとりあえず動くものを作ることが最優先だが、次のステップとしてセキュリティやメモリ消費、パフォーマンスなどを加味してコーディングする必要があると指摘されている。ここではパフォーマンスに焦点を絞って説明が行われている。 同サイトで取り上げられているテクニックは次のとおり。 適切なアルゴリズムを使用する メモリ消費という観点からコードの最適化を実施する coutやcinの替わりにprintf系やscanf系の関数を

    kamei_rio
    kamei_rio 2015/01/23
    随分とざっくりした記述だな
  • 状態遷移図/表、すなわち設計をコードでテストする

    状態遷移表からひな型コードを生成する この状態遷移表からコードを起こすわけですが、状態遷移の実装については『StateパターンでCSVを読む』を書きました。デザイン・パターンの一つ:Stateによる実装です。今回の実装はC、継承も仮想関数も使えないという利き腕を封じられた条件なので戦術を大きく変えにゃならんです。 状態遷移の実装は要するに「(1)現状態 と (2)受理したイベント の組」に対応する「(3)アクション と (4)遷移先(新たな状態)」を引き当てることに他なりません。ならば上記(1)~(4)の並びをレコードとし、そのレコード列(=状態遷移表)から「(1)現状態 と (2)受理したイベント の組」に一致するレコードを探し出して「(3)アクション を実行して (4)新たな状態 に遷移」すればいい。 状態遷移表からひな型コードの生成には使い慣れた「T4-template」を用います。

    状態遷移図/表、すなわち設計をコードでテストする
    kamei_rio
    kamei_rio 2015/01/15
    自動生成……甘美な響きだ
  • ご注文は機械学習ですか? - kivantium活動日記

    先日書いたOpenCVでアニメ顔検出をやってみた - kivantium活動日記の続編です。アニメ顔を検出するところまではうまくいったので、今度はキャラの分類をやってみようと思います。環境はUbuntu 14.10です。 ひと目で、尋常でない検出器だと見抜いたよ まずは分類に使う学習用データを用意します。投稿から半年以上経つのにまだランキング上位に残っている驚異の動画ご注文はうさぎですか? 第1羽「ひと目で、尋常でないもふもふだと見抜いたよ」 アニメ/動画 - ニコニコ動画を使います。 動画のダウンロード Ubuntuならaptで入れられるnicovideo-dlというツールを使います。 sudo apt-get install nicovideo-dl nicovideo-dl www.nicovideo.jp/watch/1397552685その後avidemuxでOP部分だけの動画を

    ご注文は機械学習ですか? - kivantium活動日記
    kamei_rio
    kamei_rio 2014/11/28
    "C++を使います。なぜかって?「cpp=心ぴょんぴょん」だからです。"
  • C++神Scott Meyersの「Effective Modern C++」ドラフト版公開 | ソフトアンテナ

    世界有数のC++エキスパートScott Meyers氏の新しいC++「Effective Modern C++」のドラフト版が公開されました(ブログ、Reddit)。まだ完成版ではありませんが、O'Reillyの早期リリースプログラムを利用して、価格$42.99ドルで購入可能です。 目次やサンプルはSafari Books Online(O'Reilly、Peachpit、Prentice Hall、Microsoft Press、lynda.comなどが提供する書籍、ビデオなどへオンラインでアクセスできるサービス)でも確認可能。 目次は以下の通り。 Chapter 1 Deducing Types Chapter 2 auto Chapter 3 From C++98 to C++11 and C++14 Chapter 4 Smart Pointers Chapter 5 Rvalu

    C++神Scott Meyersの「Effective Modern C++」ドラフト版公開 | ソフトアンテナ
  • ビルド失敗の原因は? | スラド デベロッパー

    Googleと香港科技大学、ネブラスカ大学が共同で、ソフトウェアのビルド失敗が発生する頻度や原因、修正の手間について調査・分析を行ったそうだ(論文: PDFITworldの記事、 家/.)。 調査はGoogleの開発者18,000人が9か月間に実行したC++Javaのビルド結果2,660万回分を対象に行われた。ビルド失敗率の中央値はC++が38.4%、Javaが28.5%となった。C++の開発者は多くがテキストエディターで作業するのに対し、Javaの開発者は多くがIDEで作業するため、IDEに組み込まれたチェック機能が役立っているとみられるとのこと。 ビルド失敗の原因はコンパイラーのエラーメッセージごとに集計。さらに「依存関係エラー」「型の不一致」「シンタックスエラー」「セマンティックエラー」「その他」の5つのカテゴリーにまとめている。最も多かったのは依存関係エラーで、C++が52

    kamei_rio
    kamei_rio 2014/06/29
    Google開発者の統計中央値。ビルド失敗率はC++38.4% Java28.5%。エラー修正時間はC++5分 Java12分。
  • 多倍精度整数の基礎 ( 四則演算編 ) - Qiita

    coe は次数 i ごとの任意の係数, radix は基数. 具体的には std::vector の template 引数に coe を指定し配列の添え字を i とする. 実装 準備 まずクラスに与えられるべき必要な template parameters を確認する. template< class UInt = std::uint16_t, class DoubleUInt = std::uint32_t, class DoubleInt = std::int32_t, DoubleUInt BitNum = sizeof(UInt) * CHAR_BIT > class integer; class UInt = std::uint16_t ここには coe の型を指定する. coe で表現できる最も大きな値 + 1 が radix になる. class DoubleUInt =

    多倍精度整数の基礎 ( 四則演算編 ) - Qiita
  • 【結果発表】女子大生プログラマの心を鷲掴みにした最強のコード8選 - paiza times

    2014年4月16日より開始したpaizaオンラインハッカソン(略してPOH![ポー!])Vol.2「女子大生とペアプロするだけの簡単なお仕事です!」ですが、2014年5月14日いっぱいをもって開催期間を終了いたしました。(コードの実行自体は引き続き可能です)。 今回のオンラインハッカソンも数多くご参加いただきありがとうございました! 今回はpaizaオンラインハッカソンVol.2のレポート、最終結果と、提出された各プログラミング言語毎の最速コード(女子大生プログラマ木野ちゃんの心を鷲掴みにした最強コード)についてお届けします。 ■言語別 最速・最遅実行時間結果 POH Vol.2上でも掲載していましたが、まずはテストケース7(大規模データ)の最速・最遅実行時間、提出数です。 言語 最速実行時間 最遅実行時間 通過数 / 受験数 Java 0.04 秒 5.98 秒 327 / 1364

    【結果発表】女子大生プログラマの心を鷲掴みにした最強のコード8選 - paiza times
    kamei_rio
    kamei_rio 2014/05/22
    そして女子大生の手元にはコードだけが残り、エンジニアは名も告げず再びデスマーチに身を投じるのであった。という切ない展開を所望する
  • ドワンゴが「C++の啓蒙」専門の社員を雇う | スラド デベロッパー

    ニコニコ動画の運営などで知られるドワンゴが、「C++の啓蒙」だけを仕事とする社員を雇ったそうだ(の虫:ドワンゴに入社した)。 経緯はこのブログに詳細に書かれているが、当初はドワンゴ主催の勉強会のスピーカーとして招かれ、その後数回のやり取りのあとに雇用のオファーがあったという。ドワンゴではバックエンドにC++を使っているそうだが、それらの開発などには一切関係せず、業務としては勉強会やブログによるC++の啓蒙、標準化会議や国際会議への参加などになるそうだ。 「不自由なソフトウェアを使いたくない」「不自由なソフトウェアを書きたくない」という要望もドワンゴ側は許してくれたという。海外では企業がオープンソースソフトウェアの開発者に対し、自社業務に関係なく雇用するという例はあるが、日では珍しい。

    kamei_rio
    kamei_rio 2014/02/23
    社内で宗教戦争してるのか気になるところ
  • 本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために

    かつて、ゲームプログラミングはアセンブリが主流で、8bitCPUは掛け算や割り算すらないものでした。割り算がないCPUっていつの時代だよ、っていう人たちもおりますが、ゲームボーイアドバンスに搭載されているARM7TDMIは除算の命令を持っていません。(故に除算を書くと死ぬほど遅いので、乗算で代用したりする) また、浮動小数に対する演算ユニットを持っていないハードウェアもあります。ニンテンドーDSに搭載されているARM946E-Sですら、浮動小数演算ユニットはありません。(CPUの機能としてはオプションで存在する)そのために固定小数点といった技術もあるわけですが、古くさい話です。 これらはCとC++の機能を駆使していかにパフォーマンスを出すかを余儀なくされた時代です。 さておき、最近はスマートフォンでのゲーム開発も進化しており、C++iPhoneAndroidの両方で動くということもあ

    本当に怖いC++erとC++という糞言語 - 神様なんて信じない僕らのために
    kamei_rio
    kamei_rio 2013/12/26
    よくわからない子にはJavaをさせろ
  • 詳説 Cポインタ

    ポインタはC言語を習得する上での最大の壁と言われ、マスターすることが難しくポインタで挫折するプログラマも少なくありません。しかし、一方でポインタをひとたび理解すると、柔軟で効率的なプログラムを書くことができます。書はC言語のエキスパートとなるために避けては通れないポインタについて、図とコードを多用して、視覚的かつ直観的な理解を促します。また、プログラムが動作するためのメモリ構造と管理方法についても理解できるので、Cに限らず他の言語(JavaC++、C#など)のプログラマにも役立つ内容となっています。 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の

    詳説 Cポインタ
  • Java、C++、Python…プログラミング言語擬人化計画!|【Tech総研】

  • ゲーム開発者のための C++11/C++14

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだGenya Murakami

    ゲーム開発者のための C++11/C++14
  • ゲームプログラミングにおけるC++の都市伝説 - ソフトウエア研究会in秋葉原 - PukiWiki

    ゲームプログラミングにおけるC++の都市伝説 † この記事は、C++ Advent Calendar 2012 22日目の記事です。 Prev 21日目の記事 CEANによる配列操作 Next 23日目の記事 構造化並列プログラミング 時間の関係で3つの都市伝説しかご紹介できませんでしたが、またの機会があれば他の都市伝説についてもお話したいと思います。 2012/12/22 written by h.godai @hgodai 目次 初めに 都市伝説1 C++は遅いのでゲームには向いていない 都市伝説2 boost::poolはゲームには向いていない 都市伝説3 boostライブラリは怪しいライブラリだ。使うと呪われる。 ↑ 初めに † かつて、8bit時代はゲームのプログラムはアセンブラが主流でした。やがて、ゲームのプラットフォームが16bitから32bitになるに従い、C言語でゲーム

    kamei_rio
    kamei_rio 2012/12/23
    検証は大事
  • C++文字コードのお話

    Maxしぐれん @Sigureya なぜか文字コードの設定がマルチバイト文字になっていて面倒なことになっていた。 const char*がsjisになっていたっぽい。 2012-08-18 18:17:58

    C++文字コードのお話
  • 1