در C++، Set یکی از ساختارهای دادهای STL است که مجموعهای از عناصر یکتا (Unique) و مرتب را ذخیره میکند.
Set برای زمانی مفید است که بخواهیم دادهها بدون تکرار و به صورت مرتب نگهداری شوند و عملیات جستجو، حذف و درج سریع باشد.
🔹 1️⃣ ایجاد Set
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s; // مجموعه خالی
set<int> s2 = {5, 1, 3, 3}; // با مقداردهی اولیه، عناصر تکراری حذف میشوند
for(int x : s2)
cout << x << " "; // خروجی: 1 3 5
return 0;
}
توجه: Set به صورت خودکار مرتب (Ascending) است و عناصر تکراری را قبول نمیکند.
🔹 2️⃣ اضافه کردن عناصر
s.insert(10);
s.insert(5);
s.insert(20);
for(int x : s)
cout << x << " "; // خروجی: 5 10 20
-
()insert
→ اضافه کردن عنصر -
اگر عنصر تکراری باشد، اضافه نمیشود.
🔹 3️⃣ حذف عناصر
s.erase(10); // حذف عنصر 10
for(int x : s)
cout << x << " "; // خروجی: 5 20
-
erase(value)
→ حذف یک عنصر -
()s.clear
→ حذف تمام عناصر
🔹 4️⃣ جستجو در Set
if(s.find(5) != s.end()) {
cout << "Element 5 found" << endl;
} else {
cout << "Element not found" << endl;
}
-
find(value)
→ اگر پیدا شود iterator برمیگرداند، در غیر این صورت()s.end
-
جستجو در Set بسیار سریع است (
O(log n)
).
🔹 5️⃣ اندازه و وضعیت
cout << "Size: " << s.size() << endl;
if(s.empty()) cout << "Set is empty" << endl;
🔹 6️⃣ Set مرتب نزولی
set<int, greater<int>> s;
s.insert(10);
s.insert(5);
s.insert(20);
for(int x : s)
cout << x << " "; // خروجی: 20 10 5
🔹 7️⃣ نکات کلیدی
-
Set عناصر یکتا و مرتب را نگه میدارد.
-
اضافه کردن، حذف و جستجو سریع است (
O(log n)
با استفاده از Red-Black Tree). -
Set مناسب حذف تکرار، جستجوی سریع و مرتبسازی خودکار است.
-
اگر ترتیب اهمیتی نداشته باشد و سرعت مهم باشد، میتوان از
unordered_set
استفاده کرد (O(1)
تقریبی).
💡 خلاصه:
Set در C++ مجموعهای از عناصر یکتا و مرتب است. با توابع insert
, erase
, find
, size
, empty
میتوان عناصر را مدیریت و جستجو کرد. Set برای حذف تکرار، جستجوی سریع و مرتبسازی خودکار کاربرد دارد و پایهای در بسیاری از الگوریتمها و برنامههای کاربردی است.