تفاوت ساخت وکتور با {} و () - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تفاوت ساخت وکتور با {} و ()

+1 امتیاز

سلام آیا این 2 تا کد با هم تفاوتی دارند ؟!

std::vector<int> v1(10, 20);
std::vector<int> v2{10, 20};

من ازv2 که استفاده می کنیم وقتی که مینویسم 

v2[5]=5;

برنامه ارور میده ولی استفاده از v1 مشکلی ایجاد نمی کنه !

مشکل کجاست؟

سوال شده دی 7, 1393  بوسیله ی sailent (امتیاز 355)   16 44 59

1 پاسخ

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

دوست عزیز اولی میاد میگه یه ساختمان از نوع int که حاوی 10 خانه هست و مقدار پیش فرض این خانه ها 20 هست تعریف میکنه که میشه به شکل زیر

{20,20,20,20,20,20,20,20,20,20}

ولی عبارت دوم میاد یه ساختمان int تعریف میکنه که شامل دو عنصر با مقدار های 10 و 20 ایجاد میکنه که میشه به شکل زیر

{10,20}

به همین دلیل موقعی که شما [ v2[2 رو مخوای بنویسی با مشکل مواجه میشی چون ساختمان بالا دو تا خونه بیشتر نداره با اندیس های 0 و 1 حالا شما موقعی که میخوای خونه سوم که اندیسش 2 هست رو صدا بزنی بسته به کامپایلرت با مشکل مواجه میشی

ولی توی v1 اینجوری نیست چون حاوی 10 تا خونه هست که با اندیس های 0 تا 9 قابل استفاده هست

vector<type> vecor_name (size , default_value);
vector<type> vecor_name {element1,element2,element3,....};

 

نمونه کدت :

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

using namespace std;
int main ()
{
    vector<int> v1(10,20);
    vector<int> v2{10,20};

    cout << "v1 is : " << endl;
    for(auto i:v1){
        cout << "\t" <<i << endl;
    }

    cout << "v2 is : " << endl;
    for(auto i:v2){
        cout << "\t" <<i << endl;
    }

    return 0;
}

 

Fire360Boy

Always & Everywhere

پاسخ داده شده دی 8, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   7 24 43
انتخاب شد دی 18, 1393 بوسیله ی sailent
جای واترمارک نشد!!!
:(
...