重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Vector配列からVector配列への代入などのアクセスは問題なく行えるのですが、
Vectorを入れ子にした場合?にエラーが生じてしまいます。

Class Myclass{
public:
vector <int> num;
};

vector <Myclass> obj;

・・・・

vector <Myclass>::iterator it=obj.begin();
vector <int> work;

・・・・

it->num=work;

とするとエラーになってしまいます。
代入以外のresize()などのアクセスもエラーになってしまいますが、
vector が入れ子になっていることが関係しているのでしょうか?

ご教示願います。

A 回答 (4件)

> Expression: vector iterator not dereferencable



空のvectorの(ありもしない)要素を参照しようとしたんじゃないですか?
    • good
    • 0
この回答へのお礼

度々のご回答感謝いたします。

仰って頂いたとおりでした。確認不足で申し訳ございません。

iterator はスタティックだったのですが、プッシュバックしたことに

よってiteratorが空になっていました。

大変助かりました。

お礼日時:2011/04/04 21:08

そのエラーはいつ出るのですか? コンパイルするとき? それとも実行している最中?



後者なら, 単に「あなたのプログラムが間違っているだけ」という可能性も考えられますよ.
    • good
    • 0
この回答へのお礼

エラーが表示されるのは実行中ですので、
どこかで間違ってしまっているということですね
ありがとうございました。

お礼日時:2011/04/04 11:01

「エラーになる」というのは, 具体的には


・どのコンパイラで
・どのようなメッセージが出る
のですか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

開発環境は、VC++2010です。

エラーは、
Expression: vector iterator not dereferencable

For information on how your program can cause an assertion
failure,see the Visual C++ documentation on asserts.

というエラーでした。

No1の方のご回答いただいたとおり、他の方では再現ないので、
ネスト自体は関係なさそうですね。

お礼日時:2011/04/04 00:05

再現できません。



#include <iostream>
#include <vector>

using namespace std;

class Myclass {
public:
vector<int> num;
};

int main() {
vector<Myclass> obj;
obj.push_back(Myclass());
vector<Myclass>::iterator it=obj.begin();
vector<int> work;
work.push_back(123);
it->num=work;
cout << obj[0].num[0] << endl;
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

毎回動作を確認していただきまして、ありがとうございます。

他の方では、問題ないという証言だけで十分助かります。

また、お力をお貸しください。

お礼日時:2011/04/03 23:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!