- ベストアンサー
STLのmapについて
いつもお世話になっております。 今回はmapについてお聞きしたいです。 現在mapを使っていますが、mapを構造体に入れようと struct PARAM { int i; char str; map<int, int> map; }; のようにしていますが、<が不正です、のようなことを言われてうまくいきません。 構造体にmapを入れることは可能なのでしょうか? 可能ならばその方法を教えていただけると幸いです。 以上、ご教授願います。 環境は OS WindowsXP SP2 VC++6.0 です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
補足ありがとうございます。エラーの通りですね。 > error C2501: 'map' : 識別名を宣言するのに、型が指定されていません。 VCの場合、知らない識別子があるとこのエラーが出て、 たいていはその後に「構文エラー」 「…の前に不正なトークンがあります。」になるかと思います。 ここでは「突然出てきたけどmapって何?」とコンパイラに判断された。 > こんな感じです。mapをインクルードしたら消えました。 症状に対する解決策ですので、そのエラーは消えると思います。 結果として使えるようになったのでしょうか。
その他の回答 (4)
- ddnp009
- ベストアンサー率25% (15/58)
map<int, int> map; ↓ std::map<int, int> map;
- MrBan
- ベストアンサー率53% (331/615)
> コードの全体と、正確なエラーメッセージを補足した方がよいかもしれません。 同意。 > 構造体にmapを入れることは可能なのでしょうか? C++ではstructもclassも大差ありません。勿論可能です。 # extern "C"の有無なども含めてもろもろ確認したいところ。
- koko_u_
- ベストアンサー率18% (459/2509)
>_map1には値が入っているときそれを_map2にコピーするには >どのようにしたらよいでしょうか? _map2 = _map1;
- koko_u_
- ベストアンサー率18% (459/2509)
コードの全体と、正確なエラーメッセージを補足した方がよいかもしれません。 私の環境では普通に動きますよ。(FreeBSD 6.3 gcc 3.4.6) # char 型の変数名を str としたり、map<int, int> 型の変数名を map としたり # やめた方がいいですよ。
補足
ご回答ありがとうございます。 #include <map>を忘れていただけでした。 再びお聞きしたいのですが map<int, int> _map1; map<int, int> _map2; があるとして、_map1には値が入っているときそれを_map2にコピーするには どのようにしたらよいでしょうか? 変数名のつけ方ですがまだ慣れていないので思いついたものでやってしまいます。これから気をつけていきます。
補足
答えられる範囲でお答えさせていただきます。 >コード全体を補足 コード全部を表示するということですか? コードが長いので無理だと思います。 このcppファイルだけで200KB程度あります。 >正確なエラーメッセージ failname(1111) : error C2143: 構文エラー : ';' が '<' の前に必要です。 failname(1111) : error C2501: 'map' : 識別名を宣言するのに、型が指定されていません。 failname(1111) : error C2059: 構文エラー : '<' failname(1111) : error C2238: ';' の前に不正なトークンがあります。 こんな感じです。mapをインクルードしたら消えました。 ># extern "C"の有無なども含めてもろもろ確認したいところ。 #ifdef __cplusplus extern "C" { #endif こんな感じであります。 捕捉になっているかわかりませんが以上です。