std::set
Elemen unik yang terurut
std::set adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.
Apa Itu std::set?
std::set menyimpan elemen unik dalam urutan terurut. Tidak ada duplikat, dan pencarian berjalan dalam waktu logaritmik.
- Kunci juga merupakan nilainya.
- Sangat cocok untuk pemeriksaan keanggotaan dan penghapusan duplikasi.
#include <iostream>
#include <set>
int main() {
std::set<int> s{3, 1, 2, 1, 3};
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Menyisipkan Nilai
Gunakan insert() untuk menambahkan elemen. Penyisipan nilai yang sudah ada akan diabaikan begitu saja.
#include <iostream>
#include <set>
int main() {
std::set<std::string> s;
s.insert("apple");
s.insert("banana");
s.insert("apple");
std::cout << s.size() << " unique items\n";
return 0;
}Nilai Kembalian insert
insert() mengembalikan pair yang bagian .second-nya berupa bool yang memberi tahu apakah penyisipan benar-benar terjadi.
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2};
auto r = s.insert(2);
std::cout << std::boolalpha << "inserted: " << r.second << '\n';
auto r2 = s.insert(5);
std::cout << "inserted: " << r2.second << '\n';
return 0;
}Memeriksa Keanggotaan
Gunakan count() atau contains() C++20 untuk memeriksa apakah suatu nilai ada.
#include <iostream>
#include <set>
int main() {
std::set<int> s{10, 20, 30};
std::cout << s.count(20) << '\n';
std::cout << s.count(99) << '\n';
return 0;
}Menemukan Elemen
find() mengembalikan iterator ke elemen yang cocok, atau end() jika elemen tidak ada.
#include <iostream>
#include <set>
int main() {
std::set<std::string> s{"red", "green", "blue"};
auto it = s.find("green");
std::cout << (it != s.end() ? "found" : "missing") << '\n';
return 0;
}Menghapus Elemen
erase() menghapus nilai berdasarkan kunci dan mengembalikan jumlah yang dihapus (0 atau 1).
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2, 3, 4};
s.erase(3);
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Urutan Terurut
Elemen selalu dilalui dalam urutan menaik, terlepas dari urutan penyisipannya.
#include <iostream>
#include <set>
int main() {
std::set<int> s{50, 10, 40, 20, 30};
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Menghapus Duplikasi Data
Memasukkan nilai ke dalam set merupakan cara cepat untuk menghapus duplikat sekaligus mengurutkannya.
#include <iostream>
#include <set>
#include <vector>
int main() {
std::vector<int> v{4, 2, 4, 1, 2, 3, 1};
std::set<int> unique(v.begin(), v.end());
for (int x : unique) std::cout << x << ' ';
std::cout << '\n';
return 0;
}lower_bound dan upper_bound
Karena set terurut, lower_bound() dan upper_bound() memungkinkan Anda menemukan rentang secara efisien.
#include <iostream>
#include <set>
int main() {
std::set<int> s{10, 20, 30, 40, 50};
auto lo = s.lower_bound(20);
auto hi = s.upper_bound(40);
for (auto it = lo; it != hi; ++it) std::cout << *it << ' ';
std::cout << '\n';
return 0;
}Ukuran dan Pengosongan
size() melaporkan jumlah elemen, empty() memeriksa apakah tidak ada elemen, dan clear() menghapus semuanya.
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2, 3};
std::cout << s.size() << '\n';
s.clear();
std::cout << std::boolalpha << s.empty() << '\n';
return 0;
}Penyisipan Rentang
Anda dapat menyisipkan seluruh rentang dari kontainer lain; duplikat akan dihapus dan elemen diurutkan secara otomatis.
#include <iostream>
#include <set>
int main() {
std::set<int> s{1, 2, 3};
int more[] = {3, 4, 5};
s.insert(more, more + 3);
for (int x : s) std::cout << x << ' ';
std::cout << '\n';
return 0;
}Uji Cepat
Uji pemahaman Anda tentang perilaku std::set.
Ringkasan
Anda telah mempelajari bahwa std::set:
- menyimpan nilai yang unik dan terurut
- mengabaikan penyisipan duplikat secara diam-diam
- mendukung kueri
find,count,erase, serta kueri terurutlower_bound/upper_bound
Selanjutnya, Anda akan mempelajari multimap dan multiset yang memungkinkan adanya duplikat.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “std::set” gratis?
Ya — teks lengkap “std::set” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “std::set”?
Elemen unik yang terurut Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C++ Academy?
Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “std::set” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?
Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.