• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++ vectorに配列をプッシュしたい)

C++ vectorに配列をプッシュする方法

このQ&Aのポイント
  • C++のstd::vectorでは配列を要素として格納することはできません。
  • 2次元配列を扱いたい場合は、構造体を用いて1組のデータセットを作り、それをstd::vectorに格納する方法があります。
  • キーワード「vector 配列」で検索しても、vectorの動的配列の情報が多く表示されるため、目的の情報を見つけるのが難しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

コンテナに巣の配列を要素として入れることはできません. C++11 (以降) なら std::array を使えばいい. C++98 なら ・あきらめる ・Boost の boost::array を使う ・C++11 の std::array 相当のものを自作する のいずれか, かな.

marriess
質問者

お礼

やっぱり無理なんですね 回答ありがとうございました

その他の回答 (4)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

「配列って結局先頭ポインタなので」という表現は乱暴すぎるし余計に誤解させるだけの可能性が高いので賛同できないなぁ>#3. あと, コンテナに素のポインタを入れるとかえって管理が面倒になるので正直いってお勧めしない.

回答No.4

> 2個で1組のデータがたくさんある だったら vector<pair<int,int>> が楽なんじゃ?

marriess
質問者

お礼

pairというものを初めて知りました。 今回はこのpairのようなものを自作して解決していたという感じですね。 回答ありがとうございました。

  • mk48a
  • ベストアンサー率56% (1133/2007)
回答No.3

配列って結局先頭ポインタなので、 std::vector<int*> v; で、できませんか? 要素数の指定はできませんが。 ちなみにためしてはいません。

marriess
質問者

お礼

この発想はありました。 しかし、静的配列のポインタをプッシュしても同じアドレスを突っ込むだけですし、new[]した配列を入れてもvectorがデストラクトされる前にdelete[]しなければならないので管理が大変になるかと思うのでやめました。 ちなみに、静的配列にこだわっていたのは、sizeofで要素数が分かるためです。要素数も一元的に管理したいなら、#1の方が言うようにarray相当のものを自作するのがよさそうですね。 回答ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

おっと, 変換を間違えた (誤) 巣の配列 (正) 素の配列 ということで.