مشاهده نسخه کامل
: آموزش Stl
Mina Mehdizadeh
28-07-2008, 16:17
سلام به همگی ...می خوام تو این تاپیک یکمی stl کار کنیم ....من خودم تازه شروع کردم خیلی هم بلد نیستم بنابراین از همه کسایی که stl کار کردن خواهش می کنم اطلاعاته تکمیلی شون را اینجا قرار بدن تا همه از جمله خودم استفاده کنیم .....ممنون
خوب برای شروع بهتره یکمی توضیح بدیم این stl چی هست ....یه کتابخونه بزرگ که به ++c اضافه کردند....یه سری کلاس و تابع که خیلی بی دردسر می تونید کارتون را با اونها انجام بدید ...مثلا دیگه لازم نیست برای اینکه یه لیست داشته باشید لینک لیست پیاده سازی کنید ( با اون همه دردسرش !) .....فقط با یه خط کد میتونید یه لینک لیست داشته باشید اون هم با تابعهای مربوطه اش ( اضافه کردن و حذف کردن و سورت کردن و.....) .......کلا stl چیزه خوبیه دیگه......!
STL=Standard Template Library که ترجمه شده کتابخانه قالب استاندارد و دارای سه بخش اصلیه :
1) containers : اشیایی هستند که اشیای دیگه را تو خودشون نگه میدارن ( مثل vector , list ,.....)
2) algorithms : از طریق الگوریتم ها می تونیم محتویات کانتینرها رو دستکاری کنیم ( مثل سورت کردن و جست و جو کردن و.....)
3) itrators : اشیای اشاره گرند که با استفاده از اونها می تونیم به محتویات کانتینرها دسترسی داشته باشیم
راستی برای اینکه بتونید از stl استفاده کنید کافیه برای هدرهاتون h. نذارید و به جاش از ;using namespace std استفاده کنید
فکر کنم برای شروع بد نبود .....اگه خواستید مطلب تکمیلی اضافه کنید تا بعد بریم سراغ اصل مطلب !!!!
Mina Mehdizadeh
29-07-2008, 10:15
vector یا همون بردار مثل آرایه پویا عمل می کنه و دسترسی به اون هم مثل آرایه با براکت امکان پذیره
بردار v از جنس long تعریف شده که فعلا طولش صفره ولی خیلی راحت می شه اضافه اش کرد :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
الان طولش شد 10 ....( تابع ()push_back جزو توابع رزرو شده برای vector که به انتهای بردارمون i را اضافه می کنه )....البته اگه بخوایم خودمون مستقیما به بردار v مقدار دهی کنیم باید قبلش فضا لازم را رزرو کنیم :
(اما اگه از تابع های پیش فرضش استفاده کنیم دیگه نیازی به این کار نیست )
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به جای long هم هر چیزی می تونه قرار بگیره ( مثل رشته یا کلاس یا .....)
تابع های vector :
()push_back(),pop_backt: که به ترتیب به ته لیست اضافه و از ته لیست حذف می کنه
()begin,()end: اشاره گری رو برمی گردونه که به ابتدا و انتهای لیست اشاره می کنه
()size : طول بردار رو برمی گردونه
.
.
.و کلی تابع دیگه که وقتی می نویسید .v براتون ظاهر می شه ......
Mina Mehdizadeh
30-07-2008, 20:55
list مثل لینک لیست عمل می کنه و دسترسی به اعضای اون باید به وسیله اشاره گر صورت بگیره
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کار با لیست یکم سختتر از vector ولی در عوض تنوع تابع های لیست بیشتره ......
به صورت زیر اشاره گره it را تعریف می کنیم که مخوایم به خونه های لیست اشاره کنه :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
it را برابره خونه اول لیست میذاریم و تا انتهای لیست جلو می ریم و اعداد 1 تا 10 رو به لیست اضافه می کنیم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
راستی ...خونه های لیست بر خلاف آرایه و vector از یک شروع می شه نه از صفر .....
rf.ariyapoor
30-07-2008, 21:14
خانوم مهدی زاده بسیار ممنون خیلی مفید بود
من هم خودم stl رو نخوندم ولی میخوام یادش بگیرم به نظرم زیاد هم سخت نیست
من هم اگه تونستم کمکتون میکنم
ممنون
Mina Mehdizadeh
01-08-2008, 11:12
map جفتهایی از کلید و مقدار رو نگهداری می کنه و هر کلید فقط به یک مقدار مربوط می شه ....
multimap هم داریم توی multimap هر کلید ممکنه به دو یا چند کلید مربوط بشه
درواقع کلید اسمیه که به یک مقدار داده می شه وقتی مقدار ذخیره شد با استفاده از کلید قابل دستیابی است
( با استفاده از کلید می تونیم مقدار رو جست و جو کنیم )
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که اینجا کلید از جنس رشته تعریف شده و به هر رشته یک عدد long رو نسبت می دیم
مثلا تو این مثال میخوایم اسامی افراد رو با شماره تلفنهاشون داشته باشیم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا میخوایم با استفاده از کلیدمون (اسامی افراد ) مقدار ( شماره تلفن ) رو پیدا کنیم ...برای اینکار اول باید یه اشاره گر تعریف کنیم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حتما تا الان فهمیدید که برای تعریف اشاره گر از itrator:: استفاده می شه .
مثلا میخوایم شماره ali رو پیدا کنیم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برنامه کاملش هم اینه :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
البته همینطور که می بینید مثالهایی که می زنم خیلی ساده هستند .....مثلا شما می تونید اشیایی از کلاس رو توی map ذخیره کنید ....( شاید آخر دست یه سری مثال تکمیلی هم گذاشتم ولی خوب این بستگی داره خودم چقدر یاد گرفته باشم !!!!)
بسیار عالی
چند لینک از مطالب و مثال های مفید در مورد آنچه تا به الآن قرار داده اید:
vector
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
list
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
map
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید
Mina Mehdizadeh
03-08-2008, 16:32
شاید بد نباشه یه کوچولو هم در مورده string بگیم (از string تو مثال map استفاده شده )
استفاده ازش خیلی کار رو راحت می کنه .....نگاه کنید :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حتی میشه با توابع stl دستکاریش کرد ...مثلا با تابع () insert میشه وسط یه رشته یه رشته دیگه رو اضافه کرد
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
به رشته s3 رشته s1 رو اضافه می کنه ( از خونه دوم به بعد )
میتونید بعضی کاراکتر های رشته رو هم بوسیله ()erase حذف کنید :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
از خونه اول سه تا کاراکتر رو حذف می کنه ......
hekmat1990
28-04-2009, 20:07
عالی بود....لطفا توضیحات همراه مثالهای بیشتری را ارائه بدید ....تشکر
ehsan992
17-06-2015, 13:55
سـلام به همگی
دوستان میشه منو راهنمایی کنید ، از stl چیزی بلد نیسم ولی احتیاج به این برنامه دارم :
با استفاده از لیست پیوندی یکطرفه اعداد 12,10,5 را به لیست اضافه کنید و سپس عدد 5 را از لیست حذف کنید ؟
ممنون میشم:n16:
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.