C++: How to Iterate the Elements over the Sets (set, unordered_s
- 时间:2020-09-11 08:17:29
- 分类:网络文摘
- 阅读:109 次
In C++, we use set, multiset, unordered_multiset, unordered_set to store a hash set. C++ set/multiset implements a Red-Black tree that maintains the order of the elements. On the other hand, the unordered_set and unordered_multiset are based on Hashmap/Hashtable thus the elements are not sorted.
The multiset and unordered_multiset allows storing the duplicates in the set. To iterate over the sets, we can just use the simple for loop:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include <unordered_set> using namespace std; int main() { unordered_set<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (const auto &n: data) { cout << n << endl; } return 0; } |
#include <iostream> #include <unordered_set> using namespace std; int main() { unordered_set<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (const auto &n: data) { cout << n << endl; } return 0; }
Duplicates are stored only once. And the unordered_set does not sort the elements. Thus you may see different order e.g. 7 6 2 5 3.
Iterating over the C++ set is similar. The output shows that elements are ordered. The C++ set O(logN) update/insert/delete/query is slower than unordered_set which has O(1) constant complexity.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include <set> using namespace std; int main() { set<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (const auto &n: data) { cout << n << endl; // prints 2 3 5 6 7 } return 0; } |
#include <iostream> #include <set> using namespace std; int main() { set<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (const auto &n: data) { cout << n << endl; // prints 2 3 5 6 7 } return 0; }
For multiset and unordered_multiset, iterating over the elements are similar except that the results will print the duplicates.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include <set> using namespace std; int main() { multiset<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (const auto &n: data) { cout << n << endl; // prints 2 3 3 5 6 7 } return 0; } |
#include <iostream> #include <set> using namespace std; int main() { multiset<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (const auto &n: data) { cout << n << endl; // prints 2 3 3 5 6 7 } return 0; }
Note that the C++ multiset is included in set header and unordered_multiset is provided in unordered_set header.
Alternatively, we can increment the iterator to start from begin() to end() of the sets: (set, multiset, unordered_set, and unordered_multiset). We use *it to de-reference the iterator pointer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> #include <set> using namespace std; int main() { multiset<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (auto it = begin(data); it != end(data); it ++) { cout << *it << endl; // prints 2 3 3 5 6 7 } return 0; } |
#include <iostream> #include <set> using namespace std; int main() { multiset<int> data; data.insert(5); data.insert(3); data.insert(2); data.insert(3); data.insert(6); data.insert(7); for (auto it = begin(data); it != end(data); it ++) { cout << *it << endl; // prints 2 3 3 5 6 7 } return 0; }
–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:How to Land Guest Blogging Opportunities in Under an Hour Tips For Creating An Education Blog That Will Attract Followers What Is Data Blending, And What Does It Have To Do With SEO? 7 Elements of a Perfect Social Media Video 9 Simple Strategies to Improve Sales Today The Invisible Battle for Ad Space on Your Blog: Ad Fraud vs Ad S How to Solve SMTP: Could Not Authenticate using Gmail + PHPMaile The Reduce Function in Python The Combination Function and Iterator using Depth First Search A Compute the Sequential Digits within a Range using DFS, BFS, or
- 评论列表
-
- 添加评论