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

締切り済みの質問

[C++]std:mapの扱いを教えて頂けますか?

お忙し中、失礼します。
プログラミングのついて質問させて下さい。

使用言語: C++
使用ヘッダファイル:<map>

[質問]
動的確保したstd:mapを解放したいのですが、
mapの第二引数にクラスポインタを与えた場合、
登録したクラスのメンバ関数を呼び出すことは
出来るでしょうか?
もし可能ならば、方法を教えて頂けないでしょうか??

自作クラス
class C;

class test
{
//メンバ変数
 private:
C m_pC;
//メンバ関数
public:
test();     //コンストラクタ
~test();    //デストラクタ
//初期化処理
void Init()
{
m_pC = new C();
}
//終了処理
  void Term()
{
delete m_pC;
m_pC = NULL;
}}
};

map 定義
map< ID , test* >* pMap;

マップ解放処理
std::map< ID ,test*>::iterator iterator;
iterator = pMap->begin();

for(iterator ; iterator != pMap.End();iterator++)
{
//************************
//
// ここでtestクラスの解放処理を呼び出したい
// 例) test->Term()
//
//*************************

}

//マップ登録要素クリア
pMap->clear();


まだ、mapの仕様が分かっておらず勉強中の身で
申し訳ないです。

助言頂ければ幸いです。
どうかよろしくお願いします。

投稿日時 - 2013-06-19 05:50:59

QNo.8140170

すぐに回答ほしいです

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

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

回答(2)

std::map<X, Y> の個々の要素は std::pair<const X, Y> で、イテレータも pair を指しています。

pair のそれぞれの要素は first, second メンバとしてアクセスできるので、

test* p = iterator->second;
p->Term();

あるいは、同じことですが

iterator->second->Term();

で実現できると思います。

投稿日時 - 2013-06-19 19:31:11

ANo.1

map<ID, test*>::iterator::operator *() の返り値の型は何でしょうか?

投稿日時 - 2013-06-19 12:20:10

あなたにオススメの質問