• ベストアンサー

STLのmapについて

いつもお世話になっております。 今回はmapについてお聞きしたいです。 現在mapを使っていますが、mapを構造体に入れようと struct PARAM {   int  i;   char  str;   map<int, int>  map; }; のようにしていますが、<が不正です、のようなことを言われてうまくいきません。 構造体にmapを入れることは可能なのでしょうか? 可能ならばその方法を教えていただけると幸いです。 以上、ご教授願います。 環境は OS WindowsXP SP2 VC++6.0 です。

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

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.4

補足ありがとうございます。エラーの通りですね。 > error C2501: 'map' : 識別名を宣言するのに、型が指定されていません。 VCの場合、知らない識別子があるとこのエラーが出て、 たいていはその後に「構文エラー」 「…の前に不正なトークンがあります。」になるかと思います。 ここでは「突然出てきたけどmapって何?」とコンパイラに判断された。 > こんな感じです。mapをインクルードしたら消えました。 症状に対する解決策ですので、そのエラーは消えると思います。 結果として使えるようになったのでしょうか。

その他の回答 (4)

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.5

map<int, int>  map; ↓ std::map<int, int>  map;

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.3

> コードの全体と、正確なエラーメッセージを補足した方がよいかもしれません。 同意。 > 構造体にmapを入れることは可能なのでしょうか? C++ではstructもclassも大差ありません。勿論可能です。 # extern "C"の有無なども含めてもろもろ確認したいところ。

iec1128
質問者

補足

答えられる範囲でお答えさせていただきます。 >コード全体を補足 コード全部を表示するということですか? コードが長いので無理だと思います。 この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 こんな感じであります。 捕捉になっているかわかりませんが以上です。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

>_map1には値が入っているときそれを_map2にコピーするには >どのようにしたらよいでしょうか? _map2 = _map1;

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

コードの全体と、正確なエラーメッセージを補足した方がよいかもしれません。 私の環境では普通に動きますよ。(FreeBSD 6.3 gcc 3.4.6) # char 型の変数名を str としたり、map<int, int> 型の変数名を map としたり # やめた方がいいですよ。

iec1128
質問者

補足

ご回答ありがとうございます。 #include <map>を忘れていただけでした。 再びお聞きしたいのですが map<int, int> _map1; map<int, int> _map2; があるとして、_map1には値が入っているときそれを_map2にコピーするには どのようにしたらよいでしょうか? 変数名のつけ方ですがまだ慣れていないので思いついたものでやってしまいます。これから気をつけていきます。

関連するQ&A