class MY {
string mykey;
int myval;
//...and other member
public:
MY(string key) : mykey(key) {};
setval(int x) { myval=x };
};

void func() {
map<string,MY> xxx;
vector<MY *> yyy;

while() {
data* = getdata(); //ランダムにデータ取得
string key = data->getkey(); //上記のデータよりキー生成
MY my(key);
int val = data->getvalue();
my.setval(val);

it = xxx.insert(it, pair<string,MY>(key,my));
if(val==0) yyy.push_back(&it->second)
}
}

みたいな事をやりたいのですが、
コンストラクタ、コピーコンストラクタを減らすにはどうすればいいかな?
そんな事考えずにガンガン生成するもの?(ループ内のkey,my,pair辺り)

あとyyyに追加するmap内のMYのアドレスはmapから明示的に消さない限り安全なのでしょうか?
(xxx内のMY.myvalが0のMYの一覧を後で知りたい)