15double averageTime(
const std::list<std::pair<double, double>> &vals)
21 std::vector<std::pair<double, unsigned>> *vec1 =
new std::vector<std::pair<double, unsigned>>();
22 std::vector<std::pair<double, unsigned>> *vec2 =
new std::vector<std::pair<double, unsigned>>();
23 vec1->reserve(vals.size() / 4 + 1);
24 vec2->reserve(vals.size() / 4 + 1);
28 for (
auto iter = vals.begin(); iter != vals.end(); iter++)
32 vec1->push_back(std::make_pair(sum, count));
36 sum = sum + (iter->second - iter->first);
40 vec1->push_back(std::make_pair(sum, count));
42 while (vec1->size() > 1)
48 while (iter < vec1->size())
52 vec2->push_back(std::make_pair(sum, count));
57 auto p = (*vec1)[iter++];
63 vec2->push_back(std::make_pair(sum, count));
64 std::swap(vec1, vec2);
72 return vec1->front().first / vec1->front().second;