日記

内容の正しさは保証しません

emscriptenのインストール

環境 OS: Windows10 Pro ターミナル: msys2上のmintty python: msysのpython3.8.7-1 インストールの手順 公式サイト1に書いてあるように、 git clone https://github.com/emscripten-core/emsdk.git cd emsdk ./emsdk install latest ./emsdk activate lates…

markdownをhtmlに変換して脚注を表示する

Githubのwikiでドキュメントを公開しようとしたら、脚注が使用できなかったので、htmlに変換することにした。変換にはPandocを用いた。 pandoc -f markdown -t html --template=template --mathjax ファイル名.md > ファイル名.html ついでに、 Githubの外観…

インデックス付きtransform

jsのように添え字が欲しいことがあったので書いた。 #include <type_traits> #include <algorithm> struct result_of { template <class T, class R> struct y { using type = R; static inline constexpr bool value = T::value; }; template <class C, class F, class... Args> static auto f() -> y</class></class></algorithm></type_traits>

ノート 12月

std::moveとstd::forward 関数テンプレートでは, 引数がT&&のときにX&&およびX&を与えることができる このとき, TはX&と推論され, &&は無視して結局X&となる そのせいでT&&(rvalue reference)特有の処理がそのままではできなくなる std::moveはT&をT&&にstat…

ノート 8/10

最近Javascriptに興味があってPixi,jsを使ってみた。初めて使う言語なので書き方がおかしいかも 基本的なコード PixiJS API Documentation JSONで読み込む スプライトシートを扱いたいときに必要 const app = new PIXI.Application(); document.body.appendC…

ノート 7/24

std::transformは処理を適用・結果を格納するコンテナの範囲をイテレータとして受け取る関数だが、一々 std::vector<int> w(v.size()); std::transform(v.begin(), v.end(), w.begin(), w.end(), f); と書くのが面倒な上、二行も使う。 そこで、コンテナvの参照と</int>…

ノート 6/16

最近勉強できてなくてstd::vectorで詰まったので覚えたことを書く。std::vectorを使うための条件 1 Tのコピーコンストラクタが定義されていて外部から呼び出し可能である 2 Tに代入演算子が定義され利用可能 3 Tのデストラクタが外部から呼び出し可能コピー…

ノート 06/24

辞書式の並べ方にする方法 std::tupleを使う。正確にはstd::tupleの大小比較演算子を利用する。タプルの比較は最初の要素から比較し、等しい場合はまた次の要素から比較を始める。 例: make_tuple(1, 2, 3) 最初の要素を比較すると1==1なので次の要素に移る…

ノート 3/15

以前からやりたかったことは、json11に(key, var)の組のリストを与えて一括で変数varにアイテム名keyの値を代入することだった。これは前回のapply関数で実現できる。 次に、項目名keyの値を関数fで変換した後varに代入したくなった。 template <class T> void bind(T</class>…

ノート 2/17

最近再びC++を書くようになった。元々そんなに書いていないが、リハビリ中。 #include <tuple> #include <functional> template <class Tuple, class F> void g(Tuple&& tuple, F&& f) { std::apply([](auto&& ...args) { (f(args), ...); }, tuple); } tupleに対してf(x_0), f(x_1), ..., f(x_n-1)が</class></functional></tuple>…

自作パソコンの備忘録

この記事は随分前に書いたが投稿を忘れていました。前提 ・工作とかは全く経験無しだった ・CPUやメモリの役割は知っている注意事項 検索エンジンを使うときは1年以内の情報のみ表示する。予想よりずっと流れが早い。1 パーツ選び 必要なパーツは次の9種。…

7/1のノート c++17

江添亮の詳説C++17 気になった項目を列挙するconstexpr if テンプレートで使う std::is_sameと併用して型によって処理を分岐させるようにできる if (condition) { ... //もしここを通らなくても...が実行(実体化)できないといけない } if constexpr (condi…

ノート 18/5/3-6/3

DLL関連が2つ、あとwxWidgets、それと1つ未解決の問題1. エントリポイントが見つかりません 前回作成したhelloを何気なく-o hello.exeとしてビルド、ダブルクリックで実行しようとしたら「エントリポイントが見つかりません」。 原因は同名DLLが衝突してい…

wxWidgetsを使う

環境 Windows10, msys2, clang, wxWidgets3.0.4 1. ビルド 上手くビルドできたようなのでコマンドを書いておく ./configure CC="clang" CXX="clang++ -std=c++17 -DwxNO__T -DHAVE_TYPE_TRAITS -Wno-narrowing" \ --disable-shared --enable-monolithic --en…

wxWidgetsをビルドしたい

まだ出来てない。 コンパイラはmsys2から入れたclang5.0.1 wxWidgetsはstableと書いてある3.0.4詰まったのは次の箇所: case 0xfffffd9f: // readystatechange in IActiveMovie2 and IMediaPlayer ./src/msw/mediactrl_am.cpp:2234:10: error: case value ev…

clang-clを導入しようとした

QtとclangをWindowsで使いたくて、英語のよくわからないサイトを頑張って解読していたらclang-clを使えばできるらしいと知った。 失敗までの手順 1、VS2017をインストール 2、LLVMをインストール 3、MSBuildが見つかりません 4、3およびGoogle検索を繰…

ノート 18/5/7

1.std::stringで文字列を検索して全部置換する方法 C++ 文字列の置換/全置換【replace/replace_first/replace_all|std::string】 | MaryCore std::string s = "a, b, c"; // 置換対象の文字列 std::string target = ", "; // 検索文字列 std::string rep…