C++
試した環境 Windows 10 Microsoft Visual Studio Community 2019 Version 16.10.2 本題 std::partial_sort_copy は範囲を部分的にソートした結果を他の範囲にコピーする処理を行います。 標準ライブラリの他のソート処理 (std::sort や std::partial_sort な…
試した環境 Windows 10 Microsoft Visual Studio Community 2019 Version 16.8.6 cmake 3.20.1 g++ 9.3.0 本題 Visual Studio では OpenMP で並列化をする際にはビルドフラグ/openmpが必要ですが、omp_get_num_thread()などの OpenMP の API はこのビルドフ…
試した環境 glm 9.9.7 Microsoft Visual Studio Community 2019 Version 16.4.5 本題 vector.xyzwのようなドット演算子の後に指定したい要素を順に並べる表現方法を swizzle または Swizzling と呼ぶそうです。 この swizzle 表現は GLSL ではデフォルトでで…
試した環境 Microsoft Visual Studio Community 2019 Version 16.4.5 本題 以下のコードのように new 演算子で確保した複数の変数を1つの delete 演算子とコンマ演算子でまとめて解放することは出来ません。 #include <iostream> int main(int argc, char* argv[]) { i</iostream>…
試した環境 Microsoft Visual Studio Community 2019 Version 16.4.5 本題 最近私がやらかしたミスを書き残します。 #include <functional> #include <iostream> class MyCallee { public: MyCallee() : counter_(0) {} int countUp() { return ++counter_; } private: int counter</iostream></functional>…
タイトルが当たり前ですが、つまりこういうことです。 以下に例を示します。 int main() { std::cout << "(NG) 4000^3 = " << 4000 * 4000 * 4000 << std::endl; std::cout << "(OK) 4000^3 = " << 4000LL * 4000 * 4000 << std::endl; } (NG) 4000^3 = -424…
確認した環境 Windows10 Visual Studio Community 2019 Version 16.2.5 本題 前回の記事で std::thread にメンバー関数を渡すときについて書きましたが、 純粋仮想関数の場合を確認していなかったので今回確認します。 コードは以下の通りです。 class BaseC…
確認した環境 Windows10 Visual Studio Community 2019 Version 16.2.5 本題 std::thread の1番目の引数にクラスのメンバ関数を渡すとき、 そのメンバ関数が static かそうでないかで書き方が異なります。 static でないメンバ関数では2番目の引数に this を…
確認した環境 Windows10 Visual Studio Community 2019 Version 16.2.5 本題 C++ のムーブコンストラクタはデフォルトが用意されていますが、 int などの基本型がどのようになるのかを実際に動かして確認しました。 ムーブコンストラクタがちゃんと呼ばれて…
確認した環境 Windows10 Visual Studio Community 2015 Update 3 CPU Intel(R) Core(TM) i7-4790 コア数4、論理プロセッサ数8 使用するスレッド数を指定する2つの方法 forループ内の処理を並列で処理したい場合、 OpenMP が有効になっていれば#pragma omp pa…
気になったので Wandbox で調べました。 int main() { int32_t s = -1; uint32_t u = static_cast<uint32_t>(s); std::cout << u << std::endl; // 4294967295 } int main() { int32_t s = -2; uint32_t u = static_cast<uint32_t>(s); std::cout << u << std::endl; // 42949672</uint32_t></uint32_t>…
環境 Microsoft Visual C++ 2015 Draco 1.3.5 本題 Draco の status.h には、ERRORという列挙子が定義されています。 一方、windows.h 内で include している wingdi.h には、以下のようにERRORが define されています。 #define ERROR 0 そのため、 status.…
reinterpret_cast はポインタの型変換を行うという説明をよく目にします。 しかし、それだけではなく参照のキャストも行えるということをメモしておきます。 コード #include <iostream> struct Point { int x; int y; }; struct Size { int width; int height; int ar</iostream>…
環境 Windows 10 vcpkg 2018.11.23-nohash 本題 Vulkan プログラミングの環境を構築しようと構築手順を説明している記事を読んでいると、 Vulkan SDK を以下のページからダウンロードしてインストールするように書いてあります。 https://vulkan.lunarg.com/…
環境 Windows 10 Microsoft Visual Studio Community 2015 Update 3 vcpkg 2018.11.23-nohash 現象 私の環境では、vcpkg によるzlib のビルドが上手くいきませんでした。 コンソールの出力は以下のものでした。 $ vcpkg install zlib:x64-windows The follow…
オブジェクトを値返ししたときの挙動について気になることを調べました。 特に、コンストラクタの呼び出し回数やコピーコンストラクタとムーブコンストラクタのどちらが呼ばれるのかについて調べました。 環境 Microsoft Visual Studio Community 2015 Updat…