فرق resize با reserve در vector - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

فرق resize با reserve در vector

+1 امتیاز

resize با reverse توی vector چه فرقی دارن ؟

std::vector<int >a;
a.resize(5)
a.reserve(5)
??

 

سوال شده بهمن 30, 1392  بوسیله ی crypto_code (امتیاز 51)   4 7 11
دوباره تگ گذاری شد فروردین 20, 1393 بوسیله ی BlueBlade

1 پاسخ

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

reserve فقط capacity رو افزایش میده یعنی فقط اندازه یک بلاک خاص new می کنه و برای اضافه کردن عنصر باز هم باید از push_back  استفاده کرد .

ولی resize علاوه بر capacity سایز وکتور رو هم زیاد می کنه .

    std::vector<int> a;
    a.resize(5);
    for(auto i:a)
       std::cout<<i<<" ";

    std::cout<< "\n___\n";
    

    std::vector<int> b;
    a.reserve(5);
    for(auto i:b)
       std::cout<<i<<" ";

خروجی :

0 0 0 0 0

______

 

در ضمن کد های زیر هم با هم معادل هستند

    std::vector<int> a(5);
    
    std::vector<int> a;
    a.resize(5);

 

پاسخ داده شده بهمن 30, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
انتخاب شد اسفند 1, 1392 بوسیله ی crypto_code
یه چیز دیگری به گفته های شما اضافه کنم  که تو resize سازنده کلاس هم فراخوانی میشه ولی تو reserve نمیشه.
...