プロが教えるわが家の防犯対策術!

C++の超初心者です。
基礎的なこととは思いますが、色々知らべて分からなかったので、質問をさせていただきます。
連想配列を定義する方法を調べると
 std::map < std::string, int > mp ;
などと書くように説明がありますが、私が見ているコードでは、別の形式で
 command_map = new std::map < std::string, CommandCreator>() ;
とかいてありました。このイコールと、最後の >() を使った書き方が良く理解できないのですが
 new std::map <std::string, CommandCreator> command_map() ;
を意味しているのでしょうか? 
どなたかご教示頂ければ助かります。よろしくお願いいたします。

A 回答 (3件)

command_map = new std::map<std::string,CommandCreator>();


→ 変数 = new 名前空間::クラス<型パラメータ>();
→ 変数 = new 型();
→ 変数 = new 型; // 引数が無いので括弧を省略できる
変数宣言と一緒に書くなら
→ 型 *変数 = new 型;
ヒープ領域にインスタンスを作り、グローバルに使えるオブジェクトとしています。

std::map<std::string,int> mp;
→ 名前空間::クラス<型パラメータ> 変数;
→ 型 変数;
スコープ内にインスタンスを作り、スコープが終了したら削除される有限のオブジェクトとします
    • good
    • 0

ANO1さんと同意見。



最初のはローカルなオブジェクトの宣言
2番目はヒープから new で オブジェクトを作ってます。

後者はnew のごくごく基本的な使い方です。
templateの記述に惑わされず、基本に戻ってコードを
よく見ましょう。
    • good
    • 0

はっきり言えば連想配列はほとんど無関係. 実質的に「new を知ってますか?」というだけの問題.

    • good
    • 0
この回答へのお礼

コメントありがとうございました.勉強いたします.

お礼日時:2016/11/27 23:32

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