محاسبه مینیمم چند عدد زمان کامپایل - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

محاسبه مینیمم چند عدد زمان کامپایل

+2 امتیاز

من می خواستم که زمان کامپایل مینیمم چند تا عدد رو حساب کنم کد زیر رو نوشتم

template<int first,int...a>
struct min
{
    static const int value= sizeof...(a) && first>min<a...>::value ? 
                             min<a...>::value : 
                             first;
};

ولی وقتی که به شکل زیر استفاده میشه ارور داده میشه . دلیل چی هست ؟

static const int eleven = min<42,97,11,59>::value;

 

سوال شده آذر 6, 1393  بوسیله ی Mad (امتیاز 245)   10 35 47

3 پاسخ

0 امتیاز

زمان کامپایل !!!!

#include <iostream>
#define _MAX(a,b)((a)<(b)?(a):(b));
using namespace std;
void main(){
	int a = 10, b = 12;
	cout << _MAX((a), (b)) ;
	cout << endl;
}

Fire360Boy

Always & Everywhere

پاسخ داده شده آذر 22, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
خسته نباشید ولی این زمان زمان کامپایل _Max کپی میشه و به این شکل در میاد
cout<<((10)<(12)?(10):(12)); که این شرط ها زمان اجرا چک میشن نه کامپایل . بعد هم این که این فقط برای 2 عدد کار می کنه نه n تا . من کلا سوالم چیز دیگه ای بود!
به اون جمله دقت کن
زمان کامپایل!!!
0 امتیاز

احساس میکنم منظورتو فهمیدم

#include <iostream>
#include <fstream>
#include <vector>
#include <cstdarg>

using namespace std;

template<class fire>
fire _max(fire T,...){
    if (T<=0)return 0;
    va_list args;
    va_start (args, T);
    fire ret=va_arg(args,fire);
    for (int i=1; i  < T; i++){
       fire t=va_arg(args,fire) ;
       if (t>ret)ret=t;
    }
    va_end (args);
    return ret;
}

int main ()
{

    cout << _max(5,19,17,12,13,7) << endl;
    cout << (char)_max(3,'a',109,'d') << endl;
    cout << (char)_max(5,'c','x','z','m','n') << endl;
    
    return 0;
}

 

خروجی

19
m
z

 

پاسخ داده شده دی 8, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
0 امتیاز

برای min

#include <iostream>
#include <fstream>
#include <vector>
#include <cstdarg>

using namespace std;

template<class fire>
fire _min(fire T,...){
    if (T<=0)return 0;
    va_list args;
    va_start (args, T);
    fire ret=va_arg(args,fire);
    for (int i=1; i  < T; i++){
       fire t=va_arg(args,fire) ;
       if (t<ret)ret=t;
    }
    va_end (args);
    return ret;
}

int main ()
{

    cout << _min(5,19,17,12,13,7) << endl;
    cout << (char)_min(3,'a',109,'d') << endl;
    cout << (char)_min(5,'c','x','z','m','n') << endl;

    return 0;
}

 

پاسخ داده شده دی 8, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
...