匿名質問者

C++プログラミングの質問です。


STLのstd::queueにstd::stringをpushする際、格納されたデータは本来格納しようとしていたデータ自体(同一のアドレス)なのか、それとも本来格納しようとしていたデータのコピーなのか知りたいです。

言い換えると、以下のページの「値によるコンテナ」なのか、「参照によるコンテナ」なのかを知りたいです。
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A_%28%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%29

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/07/29 10:07:24

回答1件)

匿名回答2号 No.1

コピーです。
push - cpprefjp - C++ Library Reference
<https://sites.google.com/site/cpprefjp/reference/queue/queue/push>

C++では、ポインターではなく参照渡ししている場合は、特に明記されていない限りコピーを保持するのが一般的です。

匿名質問者

参考資料も付けていただいてありがとうございます。
理解いたしました。

このサービスの使い方自体に関して、少し不慣れなものでうまく使えていませんが、匿名回答1号様の迅速なコメントもありがとうございました。
大変助かりました。

2013/07/29 10:07:09
  • 匿名回答1号
    匿名回答1号 2013/07/26 23:54:18
    「値」のコピーですよ。
    STL はヘッダファイルの集まりなので、一度、読んでみると良い。

    メソッド push のパラメータは、const T & になってて、コンテナが抱える要素には operator= で、値を入れているはず。
    詰め込むクラスの operator= の実装次第だけど、std:string を含めて、シャローコピーな実装になってるクラスが多いはずです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません