vectorの固定長配列型でのエラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
spaaaark・∀・
記事: 66
登録日時: 12年前
住所: 埼玉
連絡を取る:

vectorの固定長配列型でのエラー

#1

投稿記事 by spaaaark・∀・ » 11年前

コード:

const int Val = 43;  // 実際には適当な値
vector<int[Val]> hoge;
int huga[Val];
/*fugaの初期化処理*/
hoge.push_back(fuga);
としたときに、下記のようなリファレンスでのコンパイルエラーが発生してしまいます。

コード:

c:\program files (x86)\microsoft visual studio 10.0\vc\include\xmemory(208): error C2075: 'Target of operator new()' : 配列の初期化には中かっこ ({}) が必要です。
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\xmemory(280) : コンパイルされたクラスの テンプレート のインスタンス化 'void std::allocator<_Ty>::construct<int(&)[43]>(int (*)[43],_Other)' の参照を確認してください
1>          with
1>          [
1>              _Ty=int [43],
1>              _Other=int (&)[43]
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(985) : コンパイルされたクラスの テンプレート のインスタンス化 'void std::_Cons_val<std::allocator<_Ty>,int[43],int(&)[43]>(_Alloc &,_Ty1 (*),_Ty2)' の参照を確認してください
1>          with
1>          [
1>              _Ty=int [43],
1>              _Alloc=std::allocator<int [43]>,
1>              _Ty1=int [43],
1>              _Ty2=int (&)[43]
1>          ]
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\vector(976): クラス テンプレート のメンバー関数 'void std::vector<_Ty>::push_back(const _Ty (&))' のコンパイル中
1>          with
1>          [
1>              _Ty=int [43]
1>          ]
1>          c:\users\(username)\documents\visual studio 2010\projects\(projectname)\(projectname)\_source\_header\dataimport.h(10) : コンパイルされたクラスの テンプレート のインスタンス化 'std::vector<_Ty>' の参照を確認してください
1>          with
1>          [
1>              _Ty=int [43]
1>          ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\xmemory(208): fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
このエラーの原因は恐らくコードの中にあると思われるのですが、引数の型も合っていますし、対処法が分かりません。
一応発生箇所は、5行目のhoge.push_back(fuga);であることは理解しています。
どなたか対処法が分かる方がおられましたら教えていただけると助かります、よろしくお願いいたします。
クリエイティブな生活で刺激的な毎日を!

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: vectorの固定長配列型でのエラー

#2

投稿記事 by h2so5 » 11年前

コピー可能な型でないとstd::vectorには使えません。つまり、

コード:

T a;
T b = a;
のような操作が可能な型を使う必要があります。

コード:

int a[10];
int b[10] = a;
という操作はできないのでエラーになります。

代わりにstd::array か std::vectorを使ってください。

アバター
spaaaark・∀・
記事: 66
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: vectorの固定長配列型でのエラー

#3

投稿記事 by spaaaark・∀・ » 11年前

std::arrayって初めて聞きました…が、普通の配列と同じように扱えるようにはなってるのですね。
おかげでコンパイルが通るようになりました。ありがとうございました。
クリエイティブな生活で刺激的な毎日を!

閉鎖

“C言語何でも質問掲示板” へ戻る