yohhoyの日記

技術的メモをしていきたい日記

2015-05-01から1ヶ月間の記事一覧

空ストリームに対するallMatch/noneMatchはtrue

Java 8で導入されたStream APIに関して、空のストリームに対するallMatchおよびnoneMatch終端操作は常にtrueを返す。なお、空ストリームに対する anyMatchは常にfalseを返す。 // 整数値は偶数か? IntPredicate isEven = n -> (n % 2 == 0); IntStream.empt…

OpenMP並列forループの中断処理

OpenMPによる並列forループにおいて、該当ループの処理途中で中断する方法について。OpenMPでは並列forループ内からの break は禁止されるため、フラグ変数を用いたループ内処理スキップで代用する。並列リージョンでのフラグ変数アクセスは、全てクリティカ…

printfファミリ書式指定%nの応用例

printf関数ファミリの滅多に使われない書式指定%nを利用したコードの例。本記事の内容はStack Overflowで見つけた質問と回答に基づく。2021-10-11追記:C2x(C23)に向け N2834 にて%nの非推奨化(deprecate)が提案されている。 int n; printf("%s: %nFoo\n", "…

anachronistic old-style base class initializer

gcc(g++)が出力する不思議なエラーメッセージについて。役に立たない昔話。本記事の内容はStack Overflowで見つけた質問と回答に基づく。下記コードはC++言語仕様には違反(ill-formed)しているが、gcc/-fpermissiveオプションでコンパイル可能。 struct B { …

std::begin/endとconstexpr指定

C++

C++14標準ライブラリから配列版のstd::begin/end非メンバ関数がconstexpr指定され、constexpr指定付きのstd::cbegin/cend非メンバ関数が追加された。また、std::initializer_list<E>のconstexpr対応に伴い、同オーバーロードstd::begin/end非メンバ関数もconste</e>…

コンパクトなJSON表現へ変換

PythonでコンパクトなJSON文字列(空白文字を最小限に抑える)に変換する。jq --compact-output コマンド出力相当。 import json data = { "id": 42, "name": "Foo Bar", "list": ["A", "B", "C"]} json.dumps(data, separators=(',', ':')) # 最小表現 json…