それは、C ++のカーディナリティを決定することが可能ですenum class: enum class Example { A, B, C, D, E }; 使用しようとしましたsizeofが、列挙型要素のサイズが返されます。 sizeof(Example); // Returns 4 (on my architecture) カーディナリティ(私の例では5)を取得する標準的な方法はありますか?
構成コピー(1.で実行可能copy_if)を実行したいが、値のコンテナーからそれらの値へのポインターのコンテナー(2.で実行可能transform)を実行したい場合に、ユースケースが出現しました。 利用可能なツールでは、2ステップ未満でそれを行うことはできません: #include <vector> #include <algorithm> using namespace std; struct ha { int i; explicit ha(int a) : i(a) {} }; int main() { vector<ha> v{ ha{1}, ha{7}, ha{1} }; // initial vector // GOAL : make a vector of pointers to elements with i < 2 vector<ha*> ph; // …
標準のforループについて考えてみましょう。 for (int i = 0; i < 10; ++i) { // do something with i } ループのi本体で変数が変更されないようにしたいfor。 しかし、私は宣言できないiとしてconst、これは、インクリメントステートメント無効になりますよう。ようにする方法がありインクリメント文の変数の外には?iconst
C ++の「ブール」値にビット演算子&、|、および^を使用しない理由はありますか? 2つの条件のいずれか1つを真(XOR)にしたい状況に遭遇することがあるので、^演算子を条件式にスローします。また、条件のすべての部分を(短絡ではなく)結果が真であるかどうかを評価したい場合もあるので、&と|を使用します。また、ブール値を累積する必要がある場合もあります。&=と| =は非常に便利です。 これを行うと、眉毛が少し浮き上がりますが、コードはそれ以外の場合よりも意味があり、クリーンです。これらをboolsに使用しない理由はありますか?これに悪い結果をもたらす最新のコンパイラはありますか?