این دوره به روشی عملی، با اسلایدها و کدهای نمایشی، نحوه استفاده از کانتینرهای انجمنی مهم موجود در کتابخانه استاندارد ++C (به عنوان مثال std::map) را به شما آموزش میدهد. مزایا و معایب آنها و عملیات متداول را خواهید آموخت.
آنچه یاد خواهید گرفت:
برنامههای کامپیوتری غیر پیش پا افتاده باید دادهها را ذخیره و پردازش کنند. توسعه ساختارهای داده و کانتینرها از ابتدا در ++C یک کار دلهره آور و مستعد اشکال است. در واقع، شما باید جنبههای پیشرفتهای مانند حافظه دستی و مدیریت منابع، مدیریت صحیح موارد گوشهای ظریف، نوشتن کدهای عمومی و کدهایی که برای موارد خاص بهینه شدهاند و غیره را در نظر بگیرید. علاوه بر این، ساختارهای دادهای مانند درختان جستجوی باینری متعادل یا جداول هش وجود دارد که در برنامهها بسیار مفید هستند. با این حال، قطعاً اجرای آن از ابتدابی اهمیت است.
خوشبختانه، کتابخانه استاندارد ++C در حال حاضر کانتینرهایی را ارائه میدهد که با کیفیت، کارآمد و به خوبی آزمایش شدهاند. توسعه کدهای ++C با استفاده مجدد از آنها لذت بخش است: در واقع، استفاده از این کانتینرها در کد ++C، بهره وری شما را افزایش میدهد، زیرا کتابخانه استاندارد ++C به شما پیاده سازیهایی با کیفیت بالا از ساختارهای داده رایج و مفید میدهد که به راحتی میتوانید از آنها استفاده کنید. در کد ++C شما نگهبانان کتابخانه استاندارد ++C ساعتها به این ساختارهای داده نگاه میکنند و کد پیادهسازی ++C را بهبود میبخشند و بهینه میکنند. در این دوره آموزشی، C++ Standard Library: Associative Containers، یاد خواهید گرفت که چگونه به سادگی از آن گنج در برنامههای ++C خود استفاده کنید.
ابتدا، std::map را کاوش خواهید کرد که یک کانتینر انجمنی بسیار همه کاره و راحت است که میتوانید زمانی که نیاز دارید چند کلید منحصر به فرد را به مقادیر اضافی مرتبط کنید استفاده کنید. این میتواند در بسیاری از برنامهها مفید باشد، از فرهنگ لغت ترجمه گرفته تا برنامههای گرافیکی کامپیوتری و پایگاه داده.
در مرحله بعد، عملیات مهمی مانند درج، حذف و جستجوی عناصر را کشف خواهید کرد. ابتدا آنها را به صورت تئوری با استفاده از اسلایدها، از جمله بحث در مورد پیچیدگی زمان اجرا مجانبی آنها، خواهید دید. سپس، آنها را در عمل در کدهای آزمایشی عملی نیز خواهید دید. همچنین نحوه دستیابی به عملکرد بهتر از std::map، با استفاده از std::unordered_map را نیز لمس خواهید کرد. با این وجود، خواهید دید که هزینه آن چگونه است، مانند از دست دادن سفارش عنصر که توسط std::map تضمین شده است. سپس، یک کد آزمایشی عملی با معیار مقایسه std::unordered_map با عملکرد std::map در عمل خواهید دید.
در نهایت، یاد خواهید گرفت که چگونه به راحتی عناصر منحصر به فرد را در یک ظرف خاص ذخیره کنید، و ترتیب عناصر را حفظ کنید. این کار با استفاده از std::set امکان پذیر است. خواهید دید که چگونه اشیاء سفارشی را در std::set ذخیره کنید، از جمله نحوه رفع یک باگ ظریف. امیدوارم بحث باگهای ظریف که مخصوصاً برای کسانی که شروع به یادگیری ظروف کتابخانه استاندارد ++C کردهاند، باعث صرفهجویی در وقت و سردرد شما در طول برنامهنویسی ++C شود. برای پیگیری ماهرانه این دوره، فقط به دانش اولیه از ویژگیهای زبان ++C نیاز دارید. شما همچنین باید برخی از عناصر اساسی معماری کتابخانه استاندارد ++C را بدانید، مانند تکرارکنندهها، که در دوره آموزشی «کتابخانه استاندارد ++C: ظروف متوالی» توضیح داده شدهاند.
پس از تکمیل این دوره، میتوانید از کارآمدی با کیفیت بالا استفاده کنید. و کانتینرهای انجمنی استاندارد C++ Standard Library مانند std::map، std::unordered_map و std:: در کد ++C خودتان تنظیم شده است. شما دانش عملی در مورد آنها خواهید داشت و قادر خواهید بود در مورد انتخاب یکی یا دیگری بر اساس مشکل مورد نظر قضاوت مناسبی داشته باشید. شما همچنین اطلاعاتی در مورد عملیات مشترک مهم با این کانتینرهای انجمنی استاندارد مانند درج، حذف و جستجوی عناصر خواهید داشت.
نمونه ویدیوی آموزشی ( زیرنویسها جدا از ویدیو است و میتوانید آنرا نمایش ندهید ) :
[ENGLISH]
01 Course Overview [2mins]
01-01 Course Overview [2mins]
02 Storing Unique Objects with std::set [28mins]
02-01 Introduction [2mins]
02-02 Introducing std::set [3mins]
02-03 Creating std::set and Querying Common Attributes [2mins]
02-04 Inserting New Elements in std::set [4mins]
02-05 Iterating through std::set Elements [2mins]
02-06 Removing Elements from std::set [3mins]
02-07 Looking up Elements in std::set [3mins]
02-08 Demo: std::set in Action [4mins]
02-09 Demo: Storing Objects of Your Own Classes in std::set [3mins]
02-10 Summary [2mins]
03 Mapping Unique Keys to Values with std::map [36mins]
03-01 Introduction [2mins]
03-02 Why std::map? [2mins]
03-03 Creating and Initializing std::map [1mins]
03-04 Inserting and Looking up Associations with map::operator[] [3mins]
03-05 Iterating through std::map Associations [3mins]
03-06 Demo: std::map in Action with Number Pronunciations [3mins]
03-07 Demo: Subtle Bug with std::map’s operator[] [3mins]
03-08 Searching Associations with the map::find Method [4mins]
03-09 Demo: Fixing the Subtle Bug when Looking up Items in Constant std::map [2mins]
03-10 Demo: Implementing a Simple English-Italian Dictionary with std::map [3mins]
03-11 Demo: Implementing a Simple Airport Database with std::map [4mins]
03-12 Removing Associations from std::map [3mins]
03-13 Summary [3mins]
04 Efficient Key-value Associations with std::unordered_map [23mins]
04-01 Introduction [1mins]
04-02 Introducing std::unordered_map [3mins]
04-03 unordered_map vs. map: Element Sorting [1mins]
04-04 unordered_map vs. map Under the Hood: Performance Differences [6mins]
04-05 Demo: unordered_map vs. map Performance in Action: Counting Words [7mins]
04-06 A Brief Touch on Using Custom Classes as Keys [2mins]
04-07 Recommendations to Learn More [1mins]
04-08 Summary and Thank You [2mins]
[فارسی]
01 بررسی اجمالی دوره [2 دقیقه]
01-01 بررسی اجمالی دوره [2 دقیقه]
02 ذخیره اشیاء منحصر به فرد با std--set [28 دقیقه]
02-01 مقدمه [2 دقیقه]
02-02 معرفی std--set [3 دقیقه]
02-03 ایجاد std--set و پرس و جو ویژگیهای مشترک [2 دقیقه]
02-04 درج عناصر جدید در std--set [4 دقیقه]
02-05 تکرار از طریق std--set Elements [2 دقیقه]
02-06 حذف عناصر از std--set [3 دقیقه]
02-07 جستجوی عناصر در std--set [3 دقیقه]
02-08 نسخهی نمایشی- std--set in Action [4 دقیقه]
02-09 نسخهی نمایشی- ذخیره اشیاء کلاسهای خود در std--set [3 دقیقه]
02-10 خلاصه [2 دقیقه]
03 نگاشت کلیدهای منحصر به فرد به مقادیر با std--map [36 دقیقه]
03-01 مقدمه [2 دقیقه]
03-02 چرا std--map؟ [2 دقیقه]
03-03 ایجاد و راه اندازی std--map [1 دقیقه]
03-04 درج و جستجوی ارتباط با map--operator[] [3 دقیقه]
03-05 تکرار از طریق std--map Associations [3 دقیقه]
03-06 نسخهی نمایشی- std--map در عمل با تلفظ اعداد [3 دقیقه]
03-07 نسخه نمایشی- اشکال ظریف با عملگر std--map[] [3 دقیقه]
03-08 جستجوی پیوندها با نقشه--روش یافتن [4 دقیقه]
03-09 نسخهی نمایشی- رفع اشکال ظریف هنگام جستجوی موارد در Constant std--map [2 دقیقه]
03-10 نسخهی نمایشی- پیادهسازی دیکشنری ساده انگلیسی-ایتالیایی با std--map [3 دقیقه]
03-11 نسخهی نمایشی- پیادهسازی یک پایگاه داده ساده فرودگاه با std--map [4 دقیقه]
03-12 حذف انجمنها از std--map [3 دقیقه]
03-13 خلاصه [3 دقیقه]
04 ارتباط کارآمد کلید-مقدار با std--unordered_map [23 دقیقه]
04-01 مقدمه [1 دقیقه]
04-02 معرفی std--unordered_map [3 دقیقه]
04-03 unordered_map در مقابل نقشه- مرتبسازی عناصر [1 دقیقه]
04-04 unordered_map در مقابل نقشه Under the Hood- Performance Differences [6 دقیقه]
04-05 نسخهی نمایشی- unordered_map در مقابل نقشه عملکرد در عمل- شمارش کلمات [7 دقیقه]
04-06 لمس مختصری در مورد استفاده از کلاسهای سفارشی به عنوان کلید [2 دقیقه]
04-07 توصیههایی برای کسب اطلاعات بیشتر [1 دقیقه]
04-08 خلاصه و تشکر [2 دقیقه]
Giovanni Dicanio یک برنامه نویس کامپیوتری است که در هر دو زمینه cross-پلتفرم C و ++C و توسعه سیستم عامل ویندوز تخصص دارد. جووانی مقالات برنامه نویسی کامپیوتری را در مورد C++، OpenGL و سایر موضوعات برنامه نویسی در مجلات کامپیوتر ایتالیایی نوشت. او اخیراً چند مقاله ویژه C++ برای مجله MSDN نیز نوشته است. او همچنین کدهایی را در برخی از پروژههای منبع باز ارائه کرد. تجربه برنامه نویسی کامپیوتر او به روزهای با شکوه Commodore 64 و Amiga 500 با Basic و اسمبلی باز میگردد. جیووانی دوست دارد به مردم در حل مشکلات برنامه نویسی C و ++C در انجمنها از جمله Stack Overflow کمک کند. او از سال 2007 جایزه MVP مایکروسافت را برای ++Visual C به خاطر مشارکتهایش در جامعه توسعه C++، ابتدا در گروههای خبری NNTP و سپس در انجمنها، دریافت کرده است.