rendered paste bodyvoid found_uniq_visitors_by_masterhost_yandex(Crossroad* s, uint64& project_id, std::vector<uint32>& source_ids, std::vector<uint32>& campaign_ids, uint32& time_begin, uint32& time_end, std::vector<uint32>& target_ids) { std::cout << "found_uniq_visitors_by_masterhost_yandex()" << std::endl; std::vector<uint128> found_sessions_sources; found_sessions_sources.clear(); std::vector<uint32>::iterator it; std::vector<uint128>::iterator sit; for (it = source_ids.begin(); it != source_ids.end(); ++it ) { std::vector<uint128> sessionids = s->ReadSourcesIndex(*it); for (sit = sessionids.begin(); sit != sessionids.end(); ++sit) { uint32 time = s->ReadSTOHIndex(*sit); if ((time >= time_begin) && (time < time_end)) { found_sessions_sources.push_back(*sit); } } } std::unique(found_sessions_sources.begin(), found_sessions_sources.end()); std::cout << "found_sessions_sources.size(): " << found_sessions_sources.size() << std::endl; std::vector<uint128> found_sessions_targets; found_sessions_targets.clear(); for (it = target_ids.begin(); it != target_ids.end(); ++it ) { std::vector<uint128> sessionids = s->ReadTargetsIndex(*it); for (sit = sessionids.begin(); sit != sessionids.end(); ++sit) { uint32 time = s->ReadSTOHIndex(*sit); if ((time >= time_begin) && (time < time_end)) { found_sessions_targets.push_back(*sit); } } } std::cout << "found_sessions_targets.size(): " << found_sessions_targets.size() << std::endl; std::vector<uint128>::iterator ssit; std::vector<uint128>::iterator stit; std::vector<uint128> result; /*for (ssit = found_sessions_sources.begin(); ssit != found_sessions_sources.end(); ++ssit) { if (std::find(found_sessions_targets.begin(), found_sessions_targets.end(), *ssit) != found_sessions_targets.end()) { result.push_back(*ssit); } } */ result.clear(); for (ssit = found_sessions_sources.begin(); ssit != found_sessions_sources.end(); ++ssit) { for ( stit = found_sessions_targets.begin(); stit != found_sessions_targets.end(); ++stit) { if (stit->low == ssit->low && stit->high == ssit->high) { result.push_back(*ssit); //std::cout << stit->low << " " << ssit->low << " = " << stit->high << " " << ssit->high << std::endl; } } } std::vector<uint64> found_visitors; std::vector<uint64>::iterator vit; found_visitors.clear(); for (sit = result.begin(); sit != result.end(); ++sit) { uint64 vis = s->ReadSTOVIndex(*sit); found_visitors.push_back(vis); //std::cout << vis << std::endl; } std::unique(found_visitors.begin(),found_visitors.end()); std::cout << "found_visitors.size():" << found_visitors.size() << std::endl; }