У меня есть две карты, 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
У меня есть cre мировали набор, содержащий даты в виде строк, как в
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 должен содержать o олько
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;
}
, но очевидно, что я не делаю это правильно. Может кто-то предложить лучший способ сделать это.
Почему? Это более подробный, менее ясный, чем простой ==, и делает то же самое здесь. –