問題タブ [auto]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++11 での自動参照
about
自動参照に問題があります。
推定型が であるのに でri1
const int
はないのはなぜri2
ですか?
ありがとう!
c++ - C++11のモダンスタイルのループとオールドスタイルのループのパフォーマンス
これは私がここに投稿する最初の質問なので、何も悪いことをしないことを願っています。
std::for_each
私の質問は、最新スタイルのC ++ 11ループ( 、範囲ベースのfor)と古いスタイルのC ++ループ( )のパフォーマンスに関するものfor (...; ...; ...)
です。私が理解したことから、現代のC ++のモットーは、「パフォーマンスに妥協のない表現度」であるように思われます。最新のC++スタイルは、パフォーマンスの低下がほとんどないかまったくない、安全でクリーンな高速コードを実現し、場合によっては、古いスタイルのC++よりもパフォーマンスが向上します。
ここで、このゲインがループに関してどれほど大きいかを評価するために、少しテストを行いました。最初に、次の3つの関数を作成しました。
main()
次に、このように呼び出してパフォーマンスを比較しました(のループ内の3行を適切にコメント/コメント解除します。
のループ内の行をコメント化/コメント解除main()
し、古いスタイルのループをベースラインとして使用して得られたプログラムの各バージョンの10回以上の実行を平均すると、範囲ベースのforループのパフォーマンスは約1.9倍低下し、std::for_each
ラムダのパフォーマンスは約2.3倍悪くなります。
これをコンパイルするためにClang3.2を使用しましたが、MS VC11を試していません(WinXPで作業しています)。
同等の実行時間を得るという私の期待を考慮して、私の質問は次のとおりです。
- 私は明らかに間違ったことをしましたか?
- そうでない場合、2倍のパフォーマンスペナルティがモダンスタイルのループを採用しない正当な理由ではないでしょうか?
最新のC++スタイルで記述されたコードの明快さと安全性は、パフォーマンスの低下の可能性を補うと信じていますが、明快さと安全性の間にトレードオフがないという声明にはまったく同意しません。側と反対側のパフォーマンス。
私は何かが足りないのですか?
c++ - 臨界点付近のキーワード「自動」
重複の可能性:
C ++0xautoキーワードでは多すぎます
重要なポイントの近くで「自動」を使用すると、問題が発生する可能性があります。
これはサンプルコードです:
「auto」は「i」のタイプが整数であると判断しますが、整数の上限は2147483647であり、簡単にオーバーフローします。
これがIdeone(gcc-4.5.1)とLWS(gcc-4.7.2)の出力です。それらは異なります。「i」はIdeone(gcc-4.5.1)のループでは2147483647のままであり、 LWS(gcc-4.7.2)ではオーバーフローします。しかし、それらのどれも期待される結果ではありません:10サイクル、毎回+1。
重要なポイントの近くで「自動」を使用することは避けるべきですか?または、ここで「自動」を適切に使用するにはどうすればよいですか?
更新:誰かが「あなたができるところならどこでも自動を使う」と言います。このスレッドであなたは私に言います。私はそれが完全に正しいとは思いません。ここでは、「longlongint」と入力する方が「int」と入力する方が適切です。どこで「自動」を安全に使えるのか、どこで使えないのかしら。
更新2:ハーブサッターによる記事の解決策4(b)が質問に答えているはずです。
c++ - 静的メンバーに対してC++11の「auto」キーワードが機能しないのはなぜですか?
コンパイル済み:gcc(Ubuntu / Linaro 4.6.3-1ubuntu5)4.6.3このように:
auto
これはキーワードの意図された動作ですか、それともgcc+のバグですか
c++ - 'auto'キーワードを使用してC++STLマップデータ構造を反復処理するにはどうすればよいですか?
これまで、STLマップのすべてのキーを次のようにトラバースするためにイテレータを常に使用してきました。
ごく最近、以下に示すように、キーを反復処理するために異なるスタイルを使用するコードに出くわしました。この機能は、改訂された標準で最近追加されたばかりですか?他の多くの言語がすでに提供しているように、より少ないコードでより多くのことを成し遂げるのはかなり興味深い方法のようです。
また、ここでキーワード「auto」を使用することの正確な意味を知りたいと思います。
c++ - 「auto」を返すメンバー関数を有効にする SFINAE の方法
テンプレート メタ プログラミングでは、戻り値の型に SFINAE を使用して、特定のテンプレート メンバー関数を選択できます。
ただし、この例のように、問題の関数 (_sum()
上記の例) に自動検出された戻り値の型がある場合、これは機能しません。_func()
ここで SFINAE を取得するには、他に何ができますか?
c++ - ベクター::operator[] 不正行為?
以前は、アクセスしたアイテムのディープstd::vector::operator[]
コピーが取得されると考えていましたが、必ずしもそうではないようです。少なくとも、次のテスト コードでは異なる結果が得られます。vector<bool>
出力 (VC10/VS2010 SP1 でコンパイルされたソース コード):
v[0]
代入後もx = newValue
以前の値と同じになると予想していましたが、そうではないようです。何故ですか?なぜvector<bool>
特別なのですか?
c++ - このベクトルが印刷されないのはなぜですか?
コンパイルエラーはit
、このスコープで宣言されていないことを示しています。型に名前が付けられていません。;
c++ - この自動変数にアクセスするにはどうすればよいですか?
自動タイプのテスト変数を宣言しましたが、アクセス方法がわかりません。このプログラムを使わずに動作させる方法は知っていますが、ここではその変数auto
にアクセスする方法を知りたいと思います。auto
コンパイラログ:
印刷方法はtest
?
c++ - `auto &&`を使用しない場合は?
- make_tupleから戻るときに、(RVOなしで)コピー/移動が含まれていますか?
- 未定義の動作を引き起こしていますか?
- 私は両方ともユニバーサルリファレンスを読み書きできます。コピー/移動がないように、
auto&& var = func()
代わりに常に使用できますか?auto var = func()