C++20 些末事 標準入力で入力した数値のうち、最大値と最小値を標準出力に出力する

コード // 0個以上の数値を入力して、入力された最大値と最小値を表示する。 #include <cmath> #include <iostream> #include <limits> #include <ranges> auto main() -> int { using value_type = int; auto min = std::numeric_limits<value_type>::max(); auto max = std::numeric_limits<value_type>::min(); // </value_type></value_type></ranges></limits></iostream></cmath>…

C++20 enumで日本語を使いたい | consteval関数でassertを使う

はじめに プログラミング言語C++ではenumが使えます。 しかしenumは日本語文字列が使えません。 enum class hoge { "青", "黄", "赤" }; // NG 日本語で書くにはどうするか。 ということで、以下のようにしてみました。 #include <algorithm> #include <array> #include <cassert> #incl</cassert></array></algorithm>…

C++20 CSV iteratorを実装する

はじめに これはCSV Parserを実装するわけではありません。 vincentlaucsb/csv-parserに乗っかって、iteratorを実装します。 国民的人気ブラウザゲーム艦隊これくしょん-艦これ-では、ユーザ有志による検証が非常に盛んに行われています。 その中でも、ダメ…

C++14以上 変数テンプレート

変数をテンプレートで書ける。 ありがちな使用例では、数値をそれぞれの型に、単純なキャストで変換するものが挙げられている。 template <class T> constexpr T pi = static_cast<T>(3.14159265358979323846); 単純なキャスト以外で変数テンプレートを使うにはどうすれ</t></class>…

C++ JSONライブラリ「nlohmann/json」の使い方

概要 nlohmann/json 特徴 コンパイル/ビルド データ格納 データ取得 任意の構造体との相互変換 デフォルト構築可能な場合 デフォルト構築不可能な場合 ソート シリアライゼーション 文字列 MessagePack CBOR バイナリ型に符号化方式を埋め込む パッチ まとめ…

C++20 比較関数と任意の型のソート

C++20 比較関数と任意の型のソート C++20 比較関数と任意の型のソート はじめに 比較関数 任意の型のソート 謝辞 はじめに 想定読者は過去の私である。 なぜこう教えてくれなかったのだ。 次なる私よ、あなたのために。 主題のとおり、C++20を前提に書いてい…

GoogleSpreadsheetの計算精度について

Google spreadsheetの計算精度について こんにち、一般に浮動小数点数はIEEE754 binary64の形式に準拠している。 この規格では、十進小数を15.95桁の精度で表現する。 ゆえに、たとえば、0.1+0.2と0.3は等しくない Google spreadsheetやMS-Excelもこの例に漏…

7-1疑似全キラ周回法

戦果稼ぎの神より、7-1戦果稼ぎ周回の極致を預かりました。これを示します。