چرا vector<bool> a درست کار نمیکنه ؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرا vector<bool> a درست کار نمیکنه ؟

+1 امتیاز

سلام خسته نباشید .

مشکل این کد چیه ؟

template<class T> 
void func(T *a) {
    
    //... 
} 

int main( ) 
{
    vector<int> l1;
    func(&l1[0]); 
    vector<bool> l2;
    func(&l2[0]); 
}



چرا l1 ارور نمیده ولی l2 ارور میده ؟!

سوال شده بهمن 30, 1392  بوسیله ی Mlp_88 (امتیاز 29)   3 3
ویرایش شده خرداد 17, 1393 بوسیله ی BlueBlade

1 پاسخ

+4 امتیاز
 
بهترین پاسخ

به خاطر این که vector از نوع bool با vector شامل عناصر دیگه یک فرق داره و اونم اینه که برای مصرف بهینه حافظه هر 8 تا bool  داخل یک bit ذخیره میشن برای همین شما نمی تونی با & به آدرس خونه اول دسترسی داشته باشی .

البته برای حل این مشکل می تونی از refrence استفاده کنی :

template<class T>
void func(T *a)
{
    //...
}
void func(std::vector<bool>::reference a)
{
 //...
}
int main( )
{
    std::vector<int> l1(2);
    func(&l1[0]);
    std::vector<bool> l2(2);
    func(l2[0]);
}

 

پاسخ داده شده بهمن 30, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 15, 1392 بوسیله ی Mlp_88
...