// これはいらないんじゃないか? → template<typename DATA>
bool operator<(DATA const &a, DATA const &b){
return a.id < b.id;
};

ってか、stringのあとにちゃんと空白を入れろと。