STL—set(二)

简介: s.find(value);返回set中对应值为value的迭代器,时间复杂度是O(logN),N为set内的元素个数

(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


目录
相关文章
|
存储 编译器 程序员
用同一棵红黑树实现map和set【STL】
用同一棵红黑树实现map和set【STL】
48 0
|
存储 C++ 容器
map、set、multimap和multiset的使用【STL】
map、set、multimap和multiset的使用【STL】
37 0
|
6月前
|
C++ 容器
【C++】红黑树模拟实现STL中的map与set
【C++】红黑树模拟实现STL中的map与set
|
5月前
|
存储 编译器 C++
|
4月前
|
存储 算法 C++
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧
64 0
|
6月前
|
存储 C++ 容器
C++:STL - set & map
C++:STL - set & map
49 4
|
6月前
|
存储 Serverless C++
【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
【C++入门到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入门 ]
78 1
|
6月前
|
C++ 容器
黑马c++ STL部分 笔记(8) set/ multiset 容器
黑马c++ STL部分 笔记(8) set/ multiset 容器
|
6月前
|
存储 搜索推荐 C++
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构
【C++高阶(二)】熟悉STL中的map和set --了解KV模型和pair结构
|
6月前
|
存储 C++ 容器
【STL】map和set的原理及其使用
【STL】map和set的原理及其使用