問題タブ [pass-by-const-reference]
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++ - const 参照によって渡されたオブジェクトの内部状態を変更/更新する方法
オブジェクトを const 参照で渡すということは、そのメンバーを変更できないことを意味します。しかし、オブジェクトにvector<string>
メンバーが含まれているとします。メンバーも必要であり、ベクター内の次の要素を指すように読み取りごとに更新する必要があるとvector<string>
仮定して、メンバーの内容を読み取るための const メソッドをどのように記述すればよいでしょうか?vector<string>::iterator
これは可能ですか、またはこの状況で別の方法がありますか? つまり、const 参照オブジェクトによって渡された内容を変更しないでください。ただし、オブジェクトはその内部状態を更新できる必要があります (つまり、ベクター内の次の要素を読み取る必要があります)。
parameter-passing - 値と結果による呼び出しと参照による呼び出しの違いを理解する
だから私はこのパスカルコードを持っています:
(「print」がスペースで区切られた配列の要素を出力し、次に新しい行を出力し、整数の場合はそれを出力すると仮定します)
そして、関数呼び出しが値と結果または参照によるものである場合、出力がどのように異なるかを理解しようとしています。
明らかに、それが単に値によるものであった場合、手順が実際のパラメーターに何の違いももたらさないことは簡単にわかります。つまり、出力 (値による) は次のようになるはずです: 5 10 3 5 10 3.
それが value-result だったら、少なくとも最初の反復: 12 12 12 だったと思います。参照による場合、私は混乱しました。それはどうなりますか?
pass-by-reference - 変数が定数として渡された場合、参照によって渡されますか?
変数を定数として渡すと、自動的に参照渡しされますか?
次のように、参照によって変数を渡すことができます。
理想的には、次のコードのようなものが必要です。
c++ - どちらが速いですか?参照渡し vs 値渡し C++
コンピュータはデータをコピーしているのではなく、データのアドレスを指しているだけなので、参照渡しは値渡しよりも高速である必要があると思いました。
ただし、次の C++ コードを検討してください。
現在、このコードは、三角形の目的の行と位置を入力してパスカル数を再帰的に計算する通常のプログラムです。
行50と位置7を入れてみましたが、約1秒で計算されます(値渡し)。出力は約 1300 万です。これは正しい値です。大量のデータをコピーする必要がないので、代わりに参照渡しをした方が高速になるのではないかと考えました。しかし、これは非常に間違っており、値渡しにかかった時間の約 3 倍の時間がかかった理由がわかりません。質問は ...
const 参照で渡すように変更しようとすると、このプログラムの計算が遅くなるのはなぜですか?
再帰関数は例外であるため、const 参照ではなく値で渡す必要がありますか?
c++ - コンストラクターで値または const 参照によって渡される引数
次のクラスに適したコンストラクターはどれですか?
コンパイラの最適化なしで、val を 1 回だけコピーしますか、それともコンストラクタ 2 が初期化リストの前にさらにコピーを作成しますか?
c++ - std::shared_ptr を値または const ref で渡し、コンテナーに格納しますか?
次のベクトルを検討してください。
そして、指定された要素をベクトルに追加する次の 2 つの関数:
私の理解では、両方の関数が ashared_ptr
をX
ベクターにプッシュするため、 の参照カウントがインクリメントされますX
。最初の関数では、参照カウントがさらにインクリメントおよびデクリメントされますが、これは不要です。
私の理解は正しいですか?したがって、2番目のオプションが望ましいですか?