В.NET (принимающий UTC):
datetime.ToString("YYYY-MM-DD'T'HH:mm:ssZ")
DateTime.Parse()
может использоваться для преобразования назад в DateTime
структура.
Я думаю, что понял:
std::set<int>::iterator it1 = set_1.begin();
std::set<int>::iterator it2 = set_2.begin();
while ( (it1 != set_1.end()) && (it2 != set_2.end()) ) {
if (*it1 < *it2) {
set_1.erase(it1++);
} else if (*it2 < *it1) {
++it2;
} else { // *it1 == *it2
++it1;
++it2;
}
}
// Anything left in set_1 from here on did not appear in set_2,
// so we remove it.
set_1.erase(it1, set_1.end());
Кто-нибудь видит какие-нибудь проблемы? Кажется, O (n) по размеру двух наборов. Согласно cplusplus.com , std :: set erase (position) является амортизированной константой, а erase (first, last) - O (log n).
Вы можете легко пройти через set_1
, проверить каждый элемент, чтобы увидеть, существует ли он в set_2
и сотрите его, если это не так. Поскольку наборы отсортированы, вы можете сравнивать их за линейное время, а стирание элемента с помощью итератора является амортизированным постоянным временем . Я бы не стал рассчитывать на то, что это будет более эффективно, чем то, с чего вы начали, бенчмаркинг был бы разумным, если бы он имел для вас значение.