مجموعه ها (Sets)
«مجموعه در C++» یعنی ظرفی با عناصر تکرارنشدنی. عناصر خودش مرتب می شوند. همچنین دسترسی با ایندکس ممکن نیست. چون ترتیب براساس مرتب سازی است.
مجموعه در C++ چیست؟
«مجموعه (Set)» فقط مقادیر یکتا نگه می دارد. مقادیر به صورت صعودی مرتب می شوند. می توانی عنصر اضافه یا حذف کنی. اما مقدارِ یک عنصر موجود تغییر نمی کند.
#include <set>
ساخت مجموعه
با set<نوع> یک متغیر بساز. سپس آماده افزودن هستی.
std::set<std::string> cars;
می توانی هنگام تعریف، با آکولاد مقداردهی کنی و چاپ کنی.
std::set<std::string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (std::string car : cars) {
std::cout << car << "\n";
}
اگر نوع عددی باشد، خروجی به صورت عددی مرتب می شود.
std::set<int> numbers = {1, 7, 3, 2, 5, 9};
for (int num : numbers) {
std::cout << num << "\n";
}
مرتب سازی نزولی
به صورت پیش فرض، صعودی است. برای نزولی از greater<نوع> استفاده کن.
std::set<int, std::greater<int>> numbers = {1, 7, 3, 2, 5, 9};
for (int num : numbers) {
std::cout << num << "\n";
}
یکتا بودن عناصر
عنصر تکراری نهایی نخواهد بود. مجموعه فقط یکی را نگه می دارد.
std::set<std::string> cars = {"Volvo", "BMW", "Ford", "BMW", "Mazda"};
for (std::string car : cars) {
std::cout << car << "\n";
}
افزودن و حذف عناصر
با .insert() اضافه کن. سپس چاپ کن تا ترتیب را ببینی.
std::set<std::string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.insert("Tesla");
cars.insert("VW");
cars.insert("Toyota");
cars.insert("Audi");
برای حذفِ خاص، از .erase(مقدار) استفاده کن.
std::set<std::string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.erase("Volvo");
cars.erase("Mazda");
برای حذف همه، از .clear() کمک بگیر.
std::set<std::string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cars.clear();
اندازه و خالی بودن
با .size() تعداد را بگیر. با .empty() وضعیت را چک کن.
std::set<std::string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
std::cout << cars.size();
std::set<std::string> a;
std::cout << a.empty();
std::set<std::string> b = {"Volvo", "BMW", "Ford", "Mazda"};
std::cout << b.empty();
حلقه روی مجموعه
ساده ترین روش، حلقه for-each است. ترتیب خروجی، مرتب شده است.
std::set<std::string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (std::string car : cars) {
std::cout << car << "\n";
}
تمرین سه مرحله ای
- یک «مجموعه در C++» از رشته ها بساز.
- چند مقدار با insert اضافه کن.
- یکی را erase کن و size را چاپ کن.
نکته: اگر دسترسی با ایندکس می خواهی، وکتورها مناسب ترند. اگر دوطرفه می خواهی، دک را ببین. برای کلید-مقدار، به نقشه ها برو. همچنین این صفحه درباره مجموعه در C++ کامل است.
جمع بندی سریع
- عناصر یکتا هستند و تکراری حذف می شود.
- مرتب سازی پیش فرض صعودی است.
- دسترسی با ایندکس وجود ندارد.
- insert، erase، clear ابزارهای اصلی هستند.