قسمت دوم ( و آخر درباره ی vector ):
در زير توابع موجود در كلاس vector را بررسي ميكنيم. اكيداً توصيه ميكنم كه سعي در حفظ كردن اين توابع نكنيد. بلكه از MSDN يا اين مقاله به عنوان مرجع هنگام برنامه نويسي استفاده كنيد. در پايان اين مقاله به چند نكته اشاره خواهم كرد كه در پيدا كردن مطلب مورد نظر در MSDN به شما كمك ميكند.
code:
vector();
vector ( size_t count );
vector ( size_t count, const type& val );
vector ( const vector& right );
سازنده كلاس vector؛ براي ساختن يك vector جديد ميتوانيد از هر كدام از اين سازندهها براي مقدار دهي اوليه آن استفاده كنيد. نوع اول يك vector تهي ميسازد. تا اينجا ما تنها از اين نوع استفاده كردهايم. متذكر ميشوم كه هنگام ساختن يك شيء از هر كلاسي، حتماً سازنده آن صدا ميشود؛ مثلاً در اين كد:
code:
vector<long> v;
سازنده پيش فرض كلاس vector كه همان سازنده بدون پارامتر (نوع اول كه در بالا ميبيبيد) است صدا ميشود.
نوع دوم، يك vector با اندازه اوليه count ميسازد. اين عناصر با مقدار پيش فرض خود مقداردهي ميشوند (مثلاً 0 براي اعداد و false براي bool). نوع size_t در سيستمهاي 32 بيتي (همان چيزي كه همه ما اكنون در حال استفاده از آن هستيم) برابر يك عدد بدون علامت 32 بيتي ( unsigned int) است و در سيستمهاي 64 بيتي، يك عدد بدون علامت 64 بيتي.
نوع سوم، تعداد count عنصر با مقدار اوليه val در vector ساخته شده درج ميكند.
نوع چهارم، يك كپي از يك vector ديگر ايجاد ميكند. به مثال زير توجه كنيد:
code:
vector<char> v1 ();
vector<char> v2 ( 9 );
v2[3] = 'a';
vector<char> v3 ( 5, '+' );
vector<char> v4 ( v2 );
v4[0] = 'b';
v1 يك vector تهي است (جفت پرانتز جلوي v1 اختياري هستند؛ در هر صورت سازنده پيش فرض صدا ميشود). v2 با 9 عنصر با مقدار ‘\0’ ساخته شده و سپي عنصر انديس 3 (چهارمين عنصر) با كاراكتر ‘a’ مقدار دهي ميشود. v3 شامل 5 كاراكتر ‘+’ است. v4 با كپي گرفتن از v2 ساخته شده و سپي عنصر اول آن با كاراكتر ‘b’ مقدار دهي ميشود.
code:
void push_back ( type& val );
همانطور كه توضيح داده شد، val را در انتهاي بردار درج ميكند.
code:
void pop_back ();
عنصر انتهايي بردار را حذف ميكند. معمولاً اين دستور مقدار ظرفيت (capacity) بردار را تغيير نميدهد؛ مثلاً اگر vector شما حاوي 3 عنصر باشد، بعد از اجراي تابع pop_back()، مقدار size() برابر 2 خواهد شد ولي مقدار capacity() همچنان 3 باقي خواهد ماند.
code:
size_t size();
تعداد عناصر موجود در ليست را برميگرداند.
code:
bool empty();
در صورتي كه vector تهي باشد، مقدار true برميگرداند و در غير اين صورت مقدار false برميگرداند. به جاي اين تابع ميتوان از عبارت size()==0 استفاده كرد.
code:
void clear();
كليه محتويات vector را پاك ميكند. بعد از اجراي اين تابع، مقدار size() صفر خواهد بود.
code:
type& front();
يك مرجع (reference) به عنصر ابتداي vector برميگرداند. اين با برگرداندن مقدار ( value) فرق ميكند، چرا كه ميتوان اين تابع را در طرف راست عمگر تساوي قرار داد و مقدار عنصر را تغيير داد:
code:
v.front() = 6;
code:
type& back();
يك مرجع به آخرين عنصر vector برميگرداند.
code:
size_t capacity();
تعداد عناصري را برميگرداند كه شيء vector ميتواند بدون تخصيص دهي حافظه جديد در خود نگه داري كند.
code:
void reserve ( size_tcount );
براي نگهداري حداقل count عنصر در شيء vector حافظه رزرو ميكند.
code:
iterator insert ( iterator where, const type& val );
void insert ( iterator where, size_t count, const type& val );
يك يا چند عنصر با مقدار val در محل where درج ميكند. براي توضيح بيشتر، به قسمت تكرارگرها مراجعه كنيد.
code:
iterator erase ( iterator where );
iterator erase ( iterator first, iterator last );
عنصري يا عناصري را از vector حذف ميكنند. در نوع اول، where عنصري را نشان ميدهد كه بايد حذف شود. در نوع دوم، first اولين عنصري كه بايد حذف شود را نشان ميدهد و last عنصر بعد از آخرين عنصري كه بايد حذف شود را مشخص ميكند. توجه كنيد كه خود last حذف نميشود. اين دو تابع تكرارگري به اولين عنصر بعد از عناصر حذف شده برميگردانند.
code:
iterator begin ();
تكرارگري به اولين عنصر vector برميگرداند.
code:
iterator end ();
تكرارگري برميگرداند كه درست به بعد از آخرين عنصر vector اشاره ميكند. اگر vector تهي باشد، اين مقدار با مقدار begin() برابر است.
code:
iterator rbegin ();
يك تكرارگر معكوس (reverse_iterator) به اولين عنصر در بردار معكوس شده برميگرداند.
code:
iterator rend ();
يك تكرارگر معكوس برميگرداند كه درست به بعد از آخرين عنصر در بردار معكوس شده اشاره ميكند.
code:
void resize ( size_t newsize );
void resize ( size_t newsize, type val );
اندازه vector را تغيير ميدهد. اگر مقدار newsize از اندازه فعلي vector كمتر باشد، عناصر از انتهاي vector حذف ميشوند تا اندازه آن به newsize برسد. اگر newsize بيشتر از اندازه فعلي vector باشد، عناصر جديد به انتهاي آن اضافه ميشوند. در صورت مشخص كردن مقدار val، اين عناصر با val مقداردهي ميشوند؛ در غير اين صورت با مقدار پيش فرض مقدار دهي ميشوند.
code:
void assign ( size_t count, const type& val );
كليه عناصر vector را حذف كرده و count عنصر با مقدار val در آن درج ميكند.
code:
type& operator[] ( size_t pos );
همانطور كه گفته شد، يك مرجع (reference) به عنصر با انديس pos برميگرداند.
code:
vector& operator= ( vector& right );
عملگر تخصيص دهي (assignment) براي كليه containerها به نحوي تعريف شده است كه يك كپي از container سمت راست در container سمت چپ عملگر تساوي ميسازد:
code:
vector<int> v1(10,100);
vector<int> v2 (5,990);
v2 = v1;
بعد از عمل تخصيص دهي (assignment،( v2 نيز حاوي 10 عنصر با مقدار 100 خواهد بود.
_________________
آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی