2012-03-27 11 views

答えて

7

はい、it does copy the element you give itです。 C++ 11では、一時的にまたはstd::moveを与えると、それを移動することもできます。

また、C++ 11には、コンストラクタ引数を指定して直接値を組み立てるemplaceがあります。

+2

参照リンクが追加されました。 –

+0

@NiklasB .:私より30秒も速かった;) –

1

です。値はコピーされますが、思った通りに機能しない可能性があります。 char*のようなポインタを押すと、文字列全体ではなくポインタ値だけがコピーされます。 intまたはCustomObjectという単純なものをプッシュしているが、ポインタはプッシュしていない場合は、コピーされます。 stackアダプタ自体に

1

パラメータは、参照することによってですが、stackはただのアダプタであることを覚えている - そのpushはすぐにその同じパラメータを渡し、push_backを呼び出します。ただし、この呼び出しは値によってパラメータを渡します。

したがって、渡すパラメータはコピーされます。参照渡しはstd::stackへの参照は1回のみコピーされることを意味します。これが値渡しだった場合は、2回コピーされます(現時点では、コンパイラーはコピーを取り除きますが、これはほぼ確実です)。

関連する問題