ورود

View Full Version : سوال: ظرفیت در وکتور ها



sourcecode
دوشنبه 19 بهمن 1394, 17:45 عصر
در vector ها اگر وکتور ظرفیت آزادی نداشته باشه ابتدا ظرفیت بردار دو برابر میشود سپس عنصر جدید به انتهای بردار اضافه میشه یعنی اگه ما وکتوری به ظرفیت 5 داشته باشیم و بعد از وارد کردن 5 عنصر درون وکتور با توجه به مطلب گفته شده باید ظرفیت وکتور به 10 بشه و عنصر جدید درون خونه 6 وکتور قرار بگیره ولی در در اجرا کد پایین ظرفیت وکتور به 7 میشه بجای اینکه 10 بشه !!!...
چرا ؟ ؟ ؟
برای درک بهتر سوالم دو تصویر زیر رو نگاه کنین تا بفهمین منظورم چیه :
138890138891
اینم کدش برای تست کردن

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector <int> v;
v.reserve(5);
char n='y';
while (n == 'y')
{
cout « "Capacity : " « v.capacity() « " Size : " « v.size() « endl;
v.push_back(n);
cin » n;
system("cls");
}
cout « endl;
system("pause");
return 0;
}

sourcecode
دوشنبه 19 بهمن 1394, 17:52 عصر
در vector ها اگر وکتور ظرفیت آزادی نداشته باشه ابتدا ظرفیت بردار دو برابر میشود سپس عنصر جدید به انتهای بردار اضافه میشه یعنی اگه ما وکتوری به ظرفیت 5 داشته باشیم و بعد از وارد کردن 5 عنصر درون وکتور با توجه به مطلب گفته شده باید ظرفیت وکتور به 10 بشه و عنصر جدید درون خونه 6 وکتور قرار بگیره ولی در در اجرا کد پایین ظرفیت وکتور به 7 میشه بجای اینکه 10 بشه !!!...
چرا ؟ ؟ ؟
برای درک بهتر سوالم دو تصویر زیر رو نگاه کنین تا بفهمین منظورم چیه :
138890138891
اینم کدش برای تست کردن

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
vector <int> v;
v.reserve(5);
char n='y';
while (n == 'y')
{
cout « "Capacity : " « v.capacity() « " Size : " « v.size() « endl;
v.push_back(n);
cin » n;
system("cls");
}
cout « endl;
system("pause");
return 0;
}





دوستان من از VS استفاده میکنم ولی یکی با کامپایلر GCC جواب درست داد یعنی وقتی که ظرفیت 5 میشه دفعه بعد 10 میشه در صورتی که برای من 7 میشه؟
آیا به سیستم عامل یا نوع کامپایلر بستگی داره یا ممکنه چیزای دیگه دخیل باشه که تو دو کامپایلر خروجی متفاوت رو نشون میده ؟