私は2つのマップを持ってtk1
おりtk2
、次の構造を持っています:
std::map<std::string, double>tk1;
std::map<std::string, double>tk2;
tk1
次のデータが含まれています。
2011-01-03 2200
2011-01-04 2209
2011-01-05 2300
tk2
次のデータが含まれています。
2011-01-03 2450
2011-01-04 2465
2011-01-06 2476
2011-01-07 2457
次のように日付を文字列として含むセットを作成しました
std::set<std::string>dateset;
std::set<std::string>new_dateset;
2 つのマップを反復処理し、次のようにセットに挿入して作成しました。
dateset.insert(it->first);
dateset
次の値があります。
2011-01-03
2011-01-04
2011-01-05
2011-01-06
2011-01-07
new_dateset に入力したいので、 と の両方にある日付のみが含まれますtk1
。tk2
つまり、 new_dateset にはのみが含まれる必要があります
2011-01-03
2011-01-04
私は次のように書いた:
std::set<std::string>::iterator it1=dateset.begin(), end1=dateset.end();
std::map<std::string, double>::iterator it2=tk1.begin(), end2=tk1.end();
std::map<std::string, double>::iterator it3=tk2.begin(), end3=tk2.end();
while (it1 != end1) {
if (it2->first == *it1)
new_dateset.insert(it2->first);
++it1;
}
しかし、明らかに私はそれを正しく行っていません。誰かがこれを行うための最良の方法を提案できますか?