C++のstd::vectorが格納する要素として配列を指定することはできますか
vectorを使って2次元配列を表現したいときは,たとえば
std::vecor<std::vector<int>> v;
とすれば2次元配列が表現できますよね.
2次元配列の列方向の要素数が2で固定されていて,行方向の要素数が不確定のデータを扱いたいので,2次元配列を格納するvectorで扱えればなと思いました.
(2個で1組のデータがたくさんあるということなので,vectorの2次元配列ではありません)
std::vector<int[2]> v;
int a[2];
a[1] = 1;
a[0] = 2;
v.push_back(a);
という書き方ではコンパイルできなかったのですが,vectorに配列要素を格納させることはできないのでしょうか.
あるいは,もし可能ならどのように書けばよいのでしょうか.
結局は1組のデータセットを構造体化してそれをvectorにプッシュするやり方に落ち着いたのですが,疑問に思ったままモヤモヤしているので質問させて頂きます.
「vector 配列」などのキーワードで検索してみましたが,vectorの動的配列としての紹介記事が多くヒットしてしまい,自分ではうまく情報を発見することはできませんでした.
よろしくお願いします.
No.3
- 回答日時:
配列って結局先頭ポインタなので、
std::vector<int*> v;
で、できませんか?
要素数の指定はできませんが。
ちなみにためしてはいません。
この発想はありました。
しかし、静的配列のポインタをプッシュしても同じアドレスを突っ込むだけですし、new[]した配列を入れてもvectorがデストラクトされる前にdelete[]しなければならないので管理が大変になるかと思うのでやめました。
ちなみに、静的配列にこだわっていたのは、sizeofで要素数が分かるためです。要素数も一元的に管理したいなら、#1の方が言うようにarray相当のものを自作するのがよさそうですね。
回答ありがとうございました。
No.5
- 回答日時:
「配列って結局先頭ポインタなので」という表現は乱暴すぎるし余計に誤解させるだけの可能性が高いので賛同できないなぁ>#3. あと,
コンテナに素のポインタを入れるとかえって管理が面倒になるので正直いってお勧めしない.お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
推しミネラルウォーターはありますか?
推しミネラルウォーターがあったら教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
C言語 配列の長さの上限
C言語・C++・C#
-
関数の実体定義にヘッダファイルの2重定義防止方法が効かない?
C言語・C++・C#
-
-
4
C言語の配列をC++のvectorに高速に変換したい
C言語・C++・C#
-
5
C++における継続行
その他(プログラミング・Web制作)
-
6
STLのvectorで作った配列をメンバ変数にする場合は。。。
C言語・C++・C#
-
7
実行ファイルのパスを取得したい
C言語・C++・C#
-
8
C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい
C言語・C++・C#
-
9
C++のfor文について
C言語・C++・C#
-
10
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
11
配列の要素数に変数を入れたいときには
C言語・C++・C#
-
12
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
13
std::stringからLPCWSTR型への変換
C言語・C++・C#
-
14
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
15
別ファイルの構造体の値を読み込む、変えるには?2
C言語・C++・C#
-
16
C++で入力した文字列から数字を取り除くもしくは数字のみをのこす
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
C# 配列の変数宣言について。
-
配列で格納したものをmsgboxで...
-
C# Listを使わずに2次元配列の...
-
複数の選択範囲の行番号を個別...
-
C言語初心者 ポインタについて...
-
配列をEraseしてもメモリが開放...
-
なぜ配列は0から始まるのです...
-
先頭アドレスとは何ですか?
-
C++ 配列を返すには?
-
CSVファイルのデータを2次元配...
-
市販のビンゴカードについて
-
Excel、VBAのユーザーフォーム...
-
【C言語】配列の中に配列を入れ...
-
unsigned char配列への入力の仕方
-
エラ-メッセ-ジの意味を教え...
-
MFC、ダイアログベースでのモー...
-
ポインタの配列のコンマについて
-
メモリと配列に関して
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
C# Listを使わずに2次元配列の...
-
C# 配列の変数宣言について。
-
先頭アドレスとは何ですか?
-
C言語で特定列だけを抽出して配...
-
配列の参照渡しで型が一致しま...
-
VBで構造体の配列を関数に渡す...
-
C++ vectorに配列をプッシュしたい
-
【速いブラインドタッチ】手を...
-
unsigned char配列への入力の仕方
-
配列をEraseしてもメモリが開放...
-
【C言語】配列の中に配列を入れ...
-
ExcelVBAで質問です。離れた二...
-
4勤2休のシフト作成
-
Functionの戻り値を2次元配列...
-
Redimした動的配列はEraseする...
-
配列を含む構造体の初期値について
-
複数の選択範囲の行番号を個別...
おすすめ情報