#pragma omp parallel for schedule(static, 1) reduction(+:num_lines) for (int i = 0; i < nfiles; ++i) { vec_str_int_type locvec; num_lines += get_properties(fname[i], locvec); #pragma omp critical { // Append local vector to propvec (consumes more memory) // propvec.insert( // propvec.end(), // std::make_move_iterator(locvec.begin()), // std::make_move_iterator(locvec.end()) // ); // Append local vector to propvec (faster) auto it = locvec.begin(); auto it2 = locvec.end(); for (; it != it2; ++it) propvec.emplace_back(std::move(*it)); } }