こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

STLのvectorで・・・

4次元配列を使いたいので以下のようなプログラムを組んでみました。
--------------------------------------------------
#pragma warning( disable : 4786 )

#include <vector>
#include <iostream>
using namespace std;

void EditYMatrix(vector< vector< vector<int> > > *vi, int i);
void EditSquareMatrix(vector< vector<int> > *vi, int i);

int main(int argc, char* argv[])
{
int i, j, c;

vector< vector< vector< vector<int> > > > vi;
cout << "Xの要素数を入力してください" << endl;
cin >> c;
vi.resize(c);

cout << "Yの要素数を入力してください" << endl;
cin >> c;
for(i=0 ; i<vi.size() ; i++)
EditYMatrix(&vi[i], c);

cout << "Zとωの入力" << endl;
for(i=0; i<vi.size() ; i++){
for(j=0; j<vi[i].size() ; j++){
cout << i << "," << j << "番目の自由度を入力してください" << endl;
cin >> c;
EditSquareMatrix(&vi[i][j], c);
}
}
return 0;
}

void EditYMatrix(vector< vector< vector<int> > > *vi, int i)
{
vi->resize(i);
}

void EditSquareMatrix(vector< vector<int> > *vi, int i)
{
vi->resize(i);
for(int j=0; j<i ; j++)
vi[j].resize(i);
}
--------------------------------------------------
Y,Z,ωは可変で、Zとωは同じにするので、
ためしにこのようなプログラムを組んでみました。
ですが、実行途中でエラーが起きてしまいます。
/* verify block type */
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
という部分でエラーが起きているのですが
知識不足で、どのような内容なのかわかりません。
どなたか分かる方教えてください。

OS:Win2000
VC++6.0

投稿日時 - 2003-03-04 21:12:58

QNo.489441

すぐに回答ほしいです

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

void EditSquareMatrix(vector< vector<int> > *vi, int i)
{
vi->resize(i);
for(int j=0; j<i ; j++)
vi[j].resize(i); // [*]
}

[*] ここ、間違ってます。正しくは:

vi->at(j).resize(i);

投稿日時 - 2003-03-05 11:27:30

お礼

ありがとうございます。
さっそく試してみます。

投稿日時 - 2003-03-10 23:20:30

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)