В STL есть функция a set_union
для нахождения объединения двух (лексикографически) отсортированных последовательностей. Предполагая, что A и B уже отсортированы,
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
...
std::vector<std::string> C;
std::set_union(A.begin(), A.end(), B.begin(), B.end(), std::back_inserter(C));
Если A и B отсортированы по дате, вам необходимо указать эту функцию / функтор сравнения дат, например,
bool is_earlier(const std::string& first_date, const std::string& second_date) {
// return whether first_date is earlier than second_date.
}
...
std::set_union(A.begin(), A.end(), B.begin(), B.end(),
std::back_inserter(C), is_earlier);