C++: How to Iterate the Elements over the Sets (set, unordered_s
- 时间:2020-09-11 08:17:29
- 分类:网络文摘
- 阅读:123 次
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) —
推荐阅读:3 Chrome Blogging Extensions to Watch Out for 2015 Cloud-Based Tools to Stake Your Business Blog On How To Protect Your Brand On Social Media Ways to Find Out if a Ghost Blogger is Right for You Why You SHOULDN’T Use WordPress as Your Blogging Platform How to Maximize Your Freelance Profits Using the Power of Emotio What to Expect from Hiring Outsourced Content Writers Call for Minimalism: How the New Wave of Blogging Platforms Give 3 Easy Ways to Improve Writing Skills Explaining The Perfect Website Design to Non-Designers
- 评论列表
-
- 添加评论