(2)find()
s.find(value);
返回set
中对应值为value
的迭代器,时间复杂度是O(logN),N为set
内的元素个数
#include <iostream> #include <set> using namespace std; int main() { set<int> s; for (int i = 1; i <= 5; i ++ ) s.insert(i); set<int>::iterator it = s.find(3); cout << *it; return 0; }
输出结果为:3
当然也可以简写成:
#include <iostream> #include <set> using namespace std; int main() { set<int> s; for (int i = 1; i <= 5; i ++ ) s.insert(i); cout << *(s.find(3)); return 0; }
(3)erase()
删除单个元素
s.erase(it);
,it
为所需要删除元素的迭代器,时间复杂度为O(1),可以结合find()
去使用
#include <iostream> #include <set> using namespace std; int main() { set<int> s; for (int i = 1; i <= 5; i ++ ) s.insert(i); for (set<int>::iterator it = s.begin(); it != s.end(); it ++ ) cout << *it << ' '; cout << endl; s.erase(s.find(3)); for (set<int>::iterator it = s.begin(); it != s.end(); it ++ ) cout << *it << ' '; return 0; }
输出结果为:
1 2 3 4 5
1 2 4 5
s.erase(value);
,value
为所需要删除元素的值,时间复杂度为O(logN),N为set内的元素个数
#include <iostream> #include <set> using namespace std; int main() { set<int> s; for (int i = 1; i <= 5; i ++ ) s.insert(i); for (set<int>::iterator it = s.begin(); it != s.end(); it ++ ) cout << *it << ' '; cout << endl; s.erase(3); for (set<int>::iterator it = s.begin(); it != s.end(); it ++ ) cout << *it << ' '; return 0; }
输出结果为:
1 2 3 4 5
1 2 4 5
删除一个区间内的所有元素
s.erase(first, last);可以删除一个区间内的所有元素,其中农first是所需要删除区间的起始迭代器,而last为所需要删除区间的末尾迭代器的下一个地址,即删除[first, last),时间复杂度为O(last - first)
#include <iostream> #include <set> using namespace std; int main() { set<int> s; s.insert(2); s.insert(-3); s.insert(7); s.insert(2); s.insert(4); s.insert(-10); s.erase(s.find(-3), s.find(4)); for (set<int>::iterator it = s.begin(); it != s.end(); it ++ ) cout << *it << ' '; return 0; }
输出结果为:-10 4 7
(4)size()
s.size();
用来获得set
内元素的个数,时间复杂度为O(1)
#include <iostream> #include <set> using namespace std; int main() { set<int> s; s.insert(2); s.insert(-3); s.insert(7); s.insert(2); s.insert(4); s.insert(-10); for (set<int>::iterator it = s.begin(); it != s.end(); it ++ ) cout << *it << ' '; cout << endl; cout << s.size(); return 0; }
输出结果为:
-10 -3 2 4 7
5
(5)clear()
s.clear();
用来清空set
内的所有元素,时间复杂度为O(N),N为set
内元素的个数
#include <iostream> #include <set> using namespace std; int main() { set<int> s; s.insert(2); s.insert(-3); s.insert(7); s.insert(2); s.insert(4); s.insert(-10); for (set<int>::iterator it = s.begin(); it != s.end(); it ++ ) cout << *it << ' '; cout << endl; s.clear(); cout << s.size(); return 0; }
输出结果为:
10 -3 2 4 7
0