그래서 난수 생성의 런타임을 측정하는 함수를 작성하고 싶습니다. 나는에 숫자를 쓰기 벡터를 초기화하기 위해, 나는 사람들을위한 템플릿을 사용하지만, 나는 또한 템플릿 매개 변수를 필요로 서로 다른 임의의 엔진과 분포를 사용할 수있게합니다.이 작동C++ 함수 템플릿, 암시 적 및 명시 적 인스턴스화를 혼합 하시겠습니까?
template<typename T_rng, typename T_dist, typename T_vectype>
double timer_gen(T_rng& rng, T_dist& dist, int n){
std::vector<T_vectype> vec(n, 0);
auto t1 = std::chrono::high_resolution_clock::now();
for (int i = 0; i < n; ++i)
vec[i] = dist(rng);
auto t2 = std::chrono::high_resolution_clock::now();
auto runtime = std::chrono::duration_cast<std::chrono::microseconds>(t2-t1).count()/1000.0;
return runtime;
}
int main(){
const int n = 1000;
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
std::minstd_rand rng_minstd (seed);
std::uniform_real_distribution<double> dist_double(0.0, 1.0);
double runtime_double_minstd = timer_gen<std::minstd_rand, std::uniform_real_distribution<double>, double>(rng_minstd, dist_double, n);
}
! 그러나 마지막 라인을 위해 더 좋은 방법이 있어야하는 것처럼 느껴집니다. 처음 두 템플릿 매개 변수는 내재적으로 추론 될 수 있습니다. 세 번째 매개 변수를 int로 설정해야하기 때문에 템플릿 매개 변수를 나열하면됩니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
와우, 나는 : result_type에 대해 몰랐다. 작품, 매우 도움이! – Basti