タグ

C++に関するtokkataのブックマーク (25)

  • C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS

    この記事は、インテル® ソフトウェア・ネットワークに掲載されている「32 OpenMP traps for C++ developers」 (http://software.intel.com/en-us/articles/32-openmp-traps-for-c-developers/) の日語参考訳です。 はじめに マルチコアシステムが急速な広がりをみせており、並列プログラミングへの早急な対応が求められています。しかしながら、経験豊富な多くの開発者にとってもこれは新しい分野です。既存のコンパイラーとコード・アナライザーでも、並列コードの開発中に一部の問題を発見することはできますが、多くの問題は検出できません。この記事では、OpenMP* を使用する並列プログラムが正しく動作しない原因となるさまざまな問題について説明します。 概要 並列プログラミングが登場したのはかなり以前のことです

    C++ 開発者が陥りやすい OpenMP* の 32 の罠 | iSUS
  • 【C++】ファイルの基本操作 | ぽるろぐ

    C++でのWindows環境のファイル操作はWinAPIを使うのがデフォルトでしたがC++17からはfilesystemのライブラリが標準で組み込まれました。(標準なんでLinuxMacでも使えるのかな?) これによりファイルのコピーや移動、削除、ファイルパスの取り扱い操作などが簡単にできます。今回はこのfilesystemでよく使いそうなメソッドのみを紹介していきたいと思います。 環境はWindows10 Visual Studioのデバッグモードで、デフォルトの実行階層はソースが配置されている場所となります。 もしVisual Studioでfilesystemのライブラリが使用できない場合こちらを参考にC++17を有効化しておきましょう。 アプリケーションの実行階層を取得 アプリケーションの実行階層を取得するにはcurrent_path関数を使用します。 #include <fil

  • printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita

    def check(n) s = "*"*n f = open("test.cpp","w") f.puts <<EOS #include <cstdio> int main(){ (#{s}printf)("Hello World\\n"); } EOS f.close() return system("clang++ test.cpp") end check(ARGV[0].to_i) $ ruby check.rb 10000 clang: error: unable to execute command: Illegal instruction: 4 clang: error: clang frontend command failed due to signal (use -v to see invocation) Apple LLVM version 10.0.1 (clang

    printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita
  • プログラミング言語Rustのススメ - Qiita

    導入 皆さんこんにちは。趣味Rustを使ってコンパイラを作ってるらいパン粉です。 プログラミング言語Rustの良さを雑にあっぴるしていきます。 では、早速cargo run!(このコマンドでRustのプログラムが実行される) C,C++のコードが出てくるので覚悟してください。 Rustとは Mozillaが応援している言語 Microsoftも注目している 2006年から開発が始まった新しめの言語 2016年、2017年、2018年のStack Overflow Developer Surveyで「最も愛されているプログラミング言語」で一位を獲得している C/C++と同等の処理速度 C/C++の代替えを目指している 静的に型が付く、コンパイラ言語 静的に変数の寿命もわかり、自動でメモリを解放(GCより速い!) 関数内部限定での極めて賢い型推論 C/C++と比べて極めて安全 オブジェクト指

    プログラミング言語Rustのススメ - Qiita
  • C 日本語文字列 - yonewiki

    C++へ戻る ※このページではC言語にも存在していたという意味で記事タイトルがC 日語文字列になっていますが、 C++でも同様です。C++だけの機能がある場合は明記します。 char型の配列で1byte、1文字を表現できるascii文字コードというものを使っていましたが、問題点はいくつかありますが、そのままでも日語全角文字は表現できます。日語文字コードは2Byteで表現されます。 全角のアルファベットからカタカナ、ひらがな、漢字、記号、あまり使わない漢字を含めて65536種類を00 00からFF FFまでで、表現しています。最初の1byteが0x80~0x9F、0xE0~0xFCならばasciiコードでは定義していないため、その後ろの1byteも読み込んで1文字だと処理してくれます。マルチバイト文字と呼んでいます。asciiコードですでに使われている部分は使えないとしても、日語文字

  • UTF-8エンコーディングされた文字の型として`char8_t`を追加 - cpprefjp C++日本語リファレンス

    #include <iostream> template<typename> struct ct; template<> struct ct<char> { using type = char; }; int main() { const auto *u8s = u8"text"; // u8sの型はC++17まではconst char *だったが、C++20からはconst char8_t *になる const char *ps = u8s; // C++17までは適格だったがC++20からは不適格 const auto *u8rs = u8R"(text)"; // u8rsの型はC++17まではconst char *だったが、C++20からはconst char8_t *になる const char *prs = u8rs; // C++17までは適格だったがC++20からは不適格

  • char8_tによせて - なるせにっき

    C++標準化委員会、ついに文字とは何かを理解する: char8_tという記事が話題だってので、つらつらと書いてみました。 「グリフ」について グリフ(glyph)という言葉の定義をめぐって でも触れられていますが、「グリフ」という言葉が「字体」を指すのか「字形」を指すのかってのは議論がありますね。文字コードの文脈では普通「字形」の意味だとして話を進めることが多いように思います。 CJK統合漢字について Wikipediaの記事にまとまっていますが、実際に推進していたのは中国みたいですね。うまくやればあんまり問題なかったんでしょうが、あんまりうまく行かなかったんですが、それでも国ごとにその国の過去にあった文字コードとの互換性は取れているので、実際の所CJK統合漢字ってあんまり問題にはなってないと思うんですよね。中国フォントと日フォントを切り替えないといけないって問題はありますけど、それ

    char8_tによせて - なるせにっき
  • C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita

    C++ Advent Calendar 2018 この記事はC++ Advent Calendar 2018 15日目の記事です。 14日目: VTKライブラリ 16日目: C++のエラー処理との付き合い方 当初見積もりよりも大幅に長い記事となり、投稿したのは12/22で1週間遅刻です。すみません。 お知らせ cpprefjpにchar8_t型追加について解説を書きました。ぎゅぎゅっとコンパクトに、また査読を受けて中立的な表現で書いていますので、よければどうぞ。 UTF-8エンコーディングされた文字の型としてchar8_tを追加 - cpprefjp C++語リファレンス 追記 全ての開発者が知っておくべきUnicodeについての最低限の知識 - GIGAZINE Unicodeについて簡潔にまとまってるいい記事を見つけました。 Caution この文章には以下の要素が含まれます。苦手

    C++標準化委員会、ついに文字とは何かを理解する: char8_t - Qiita
  • C++11からC++17を駆け抜けるC++講座 - Qiita

    初心者C++Advent Calendar 2017 この記事は初心者C++Advent Calendar 2017 15日目の記事です << 14日目|C++を学ぶにあたって参考にした書籍・Webサイト || 16日目|何か書きます >> 今週3目、このAdCでも3目の記事です。期限に間に合わなかったでござる・・・。 今年の初心者AdC++は平和ですね・・・。 はじめに みなさま、ナマステ。さて、この記事のタイトルを見て、「時代・・・サトウキビ・・・忍者・・・うぅ、頭が」となった人は私と趣味が似ています・・・って話をするのは何回目だろうか。 先日ニコニコ(デクレッシェンド)が発表されましたが、Qiitaはクレッシェンドしていって貰いたいものです(なおデザイン改悪)。 (追記:と、この記事を書いていたら百花繚乱氏が登場した動画と生放送サービスに対する意見交換会が開かれましたね。われこそ

    C++11からC++17を駆け抜けるC++講座 - Qiita
  • プログラミング/C++/VC++のC++規格対応状況 - ルーチェ's Homepage

    概要 † VC++は、他の主要なC++コンパイラ(gcc、clang)と比べ、C++規格への対応状況が芳しくありません。 とはいえ、IDE自体は使いやすいですし、そもそも仕事等でVC++を使わざるを得ない状況はどうしてもあります。 そういった場合に、今使っているVC++のバージョンでどこまでC++11以降の規格を使ってコードを書けるのか簡単にわかるようにこのページを作成しました。 ↑

  • C++/Win32APIでファイルの更新を監視したい - notargs.com

    C++/Win32APIでファイルの更新を監視したい - notargs.com
  • C++ Developer Guidance for Speculative Execution Side Channels

  • #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
    tokkata
    tokkata 2017/01/25
  • パラレルベンチマーク [C++/D/C#/VB/JS/HSP/Python/Ruby] - Qiita

    HSPPythonRubyは処理時間がかかるため、処理量を100分の1(100ずつ加算)にし、その代わり計測時間を100倍としている。 あとがき 結果について 基的にマルチスレッドやマルチプロセスは有効で、4倍までとは言わないものの大よそ2倍程度までは速度を引き上げられることを確認。 Threadを使ってもPrallelを使っても効力としては同程度。 必要ならどちらを使っても良いのかな。 ただし、PythonRubyのマルチスレッドに関してはシングルスレッドとあまり変わる結果とはならなかった。Rubyは同時に一つまでしかスレッドを動かせないとか聞いたけれど、Pythonもそういうことなのかな。 ちなみにJavaScriptのPromiseについてはシングルスレッドなのでそのまんまという所。 言語ごとの計算速度について 今回色々試していて、単純なループやインクリメントの速度も見てみ

    パラレルベンチマーク [C++/D/C#/VB/JS/HSP/Python/Ruby] - Qiita
  • コンパイラのリミッタが外れつつある今、null安全は必須なのかもしれない - Qiita

    三行で頼む コンパイラが斜め上の最適化をするようになったからnull安全ないと怖いよね 一行で終わっちゃった。 文 最近、ツイッターを見ていると、プログラマの間でnull安全という言葉がバズっていますね。私も次のようなエントリを楽しく眺めていた訳です: null安全でない言語は、もはやレガシー言語だ null安全はいいぞ。だって、型安全はいいぞ。 null安全を誤解している人達へのメッセージ さてそんな中、少しだけ私の心に留まったエントリがこれです: null安全な言語は、当にゼロコストか これを読んで、私がまず直感的に思ったのは、むしろもはやnull安全のない言語はダメかもしれないということでした。こう書くと、このエントリの内容を否定してると誤解されるかもしれませんが、全くそんなことはありません。このエントリの筆者さんもnull安全の有用性を否定しているわけではないですし、私も古いタ

    コンパイラのリミッタが外れつつある今、null安全は必須なのかもしれない - Qiita
  • C++だけでディープラーニング(CIFAR-10) - Qiita

    ディープラーニングが流行ってましたね。 そろそろ各社の経営層が慌てて取り組もうとして 末端の開発者を困らせていることでしょう。 前置き 皆さんもう Chainer は使ってみたでしょうか。 Chainer はとても便利ですが、ある程度 Python を覚えなくてはなりません。 また、環境によっては Chainer を組み込むことが難しい場合もあるでしょう。 もっと手軽に、気楽にディープラーニングしたいものです。 nanikanizer そこでこちらのこちらのライブラリを用意しました。 nanikanizer ナニカナイザと読みます。 C++ 用のライブラリで、インクルードするだけで使えます。 まずは簡単な example を紹介します。 カーブフィッティング #include <iostream> #include <iomanip> #include <nanikanizer/nanik

    C++だけでディープラーニング(CIFAR-10) - Qiita
  • A Clean C++11 Deep Learning API

    Dlib 19.0 is out and it has a lot of new features, like new elastic net and quadratic program solvers. But the feature I'm most excited about is the new deep learning API. There are a lot of existing deep learning frameworks, but none of them have clean C++ APIs. You have to use them through a language like Python or Lua, which is fine in and of itself. But if you are a professional software engin

    A Clean C++11 Deep Learning API
  • ランダムフォレストのつくりかた(C++の実装例つき) - じじいのプログラミング

    この記事は24日目の記事のつづきです。前日の関連記事「ランダムフォレストのつかいかた」もありますので、こちらもよろしくお願いします。 ランダムフォレストのつかいかた - じじいのプログラミング ランダムフォレストは、機械学習の中でも、確率統計の知識がほぼ無しで実装できる簡単なアルゴリズムで、しかも性能もなかなかのものです。TopCoder機械学習マッチのいくつかは、コードを提出してTopCoderサーバで実行するルールなので、実装しやすいランダムフォレストは有力な選択肢です。実際にランダムフォレストが1位をとったコンテストもかなりあります。 決定木の作り方さえ理解すれば、ランダムフォレストは実装できたも同然ですので、この記事では、決定木を作る部分をメインに取り上げます。 アドバイスをいただけると、とてもうれしいです。間違いのご指摘は大歓迎です。 実装は、TopCoderの他の競技者(Psy

    ランダムフォレストのつくりかた(C++の実装例つき) - じじいのプログラミング
  • OpenMP を使って Android アプリを高速化してみた ~C++ネイティブコードのマルチスレッド化でハマったポイント~ - OPTPiX Labs Blog

    OpenMP を使って Android アプリを高速化してみた ~C++ネイティブコードのマルチスレッド化でハマったポイント~ こんにちは。ウェブテクノロジの清水です。 最近はAndroid機のCPU性能もどんどん上がり、搭載メモリ容量も増えてきているので、いわゆる非常に重い演算処理を行うプログラムでも、もうAndroid機の上で実用レベルの速度で動かせるのでは?と考えている人も多いと思います。 そんな要望を満たしてくれそうなものがAndroid NDKによるC++ネイティブコード開発環境と、マルチコアCPUを前提とした高速化が簡単に行えるOpenMP技術です。 今回は、Android NDKとOpenMPを組み合わせて使用した時に遭遇した問題と、その解決方法のお話です。 Android機では処理が重すぎた とある目的で、ちょっと処理の重い画像処理プログラム(C++ネイティブコードで200

    OpenMP を使って Android アプリを高速化してみた ~C++ネイティブコードのマルチスレッド化でハマったポイント~ - OPTPiX Labs Blog
  • 制御システム用ソフトウェアの脆弱性対策 ~CERTコーディングスタンダードの活用~

    年度頭からOpenSSLの脆弱性が世間を賑わせていましたが、Webの世界だけでなく、社会インフラを支える制御システムソフトウェア(ICSソフトウェア)においても脆弱性対策を留意しておく必要があります。稿では、米国のICS-CERTが公開している脆弱性アドバイザリから見えてきたICSソフトウェアの脆弱性の傾向に加え、セキュアコーディングに特に効果的なルールを厳選して紹介します。(編集部) 社会インフラで使われているシステムの脆弱性を検証 OpenSSLにHeartbleedの脆弱性が発見されたのは記憶に新しいつい先日(4月)ですが、今月6月、今度は日の研究者である菊池さん(株式会社レピダム)がCCS Injectionと呼ばれる脆弱性を発見し、話題になりました。OpenSSLはWebの世界におけるサーバやクライアントのプログラムで幅広く利用されているオープンソースソフトウェアであることか

    制御システム用ソフトウェアの脆弱性対策 ~CERTコーディングスタンダードの活用~