set
集合,一个内部自动有序且不含重复元素的容器
set只能通过迭代器访问其元素:set <typename>::iterrator it;
insert()
insert(x)可将x插入set容器中,并自动递增排序和去重
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using namespace std;
int main()
{
set <int> st;
st.insert(3);
st.insert(5);
st.insert(4);
st.insert(2);
//必须使用迭代器访问元素
for(set<int>::iterator it=st.begin();it!=st.end();++it)
{
printf("%d ",*it);
}
}1
2 3 4 5
find()
find(value)返回set中对应值为value的迭代器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using namespace std;
int main()
{
set <int> st;
for(int i=1;i<=3;++i)
{
st.insert(i);
}
set <int >::iterator it=st.find(2);
printf("%d",*it);
//上面两句可写成printf("%d",*(st.find(2)));
}1
2
erase
删除单个元素
st.erase(it),it为所需删除元素的迭代器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using namespace std;
int main()
{
set <int> st;
st.insert(100);
st.insert(200);
st.insert(100);
st.insert(300);
st.erase(st.find(100));//利用find函数找到100,然后用erase删除它
//st.erase(st.find(200));//利用find函数找到200,然后用erase删除它
//必须使用迭代器访问元素
for(set<int>::iterator it=st.begin();it!=st.end();++it)
{
printf("%d ",*it);
}
}1
200 300
st.erase(value),value为所需删除元素的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using namespace std;
int main()
{
set <int> st;
st.insert(100);
st.insert(200);
st.insert(100);
st.insert(300);
st.erase(100);//删除set中值为100的元素
//必须使用迭代器访问元素
for(set<int>::iterator it=st.begin();it!=st.end();++it)
{
printf("%d ",*it);
}
}1
200 300
删除一个区间内的所有元素
st.erase(first,last),first和last为迭代器,左闭右开
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using namespace std;
int main()
{
set <int> st;
st.insert(100);
st.insert(200);
st.insert(150);
st.insert(300);
st.insert(700);
st.insert(500);
set <int>::iterator it =st.find(200);
st.erase(it,st.end());//删除元素200至set末尾的全部元素
//必须使用迭代器访问元素
for(set<int>::iterator it=st.begin();it!=st.end();++it)
{
printf("%d ",*it);
}
}1
100 150
size()
获得set内元素的个数
1
2
3
4
5
6
7
8
9
10
11
12
13
using namespace std;
int main()
{
set <int > st;
st.insert(2);
st.insert(5);
st.insert(4);
printf("%d",st.size());
}1
3
clear()
清空set中的所有元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using namespace std;
int main()
{
set <int > st;
st.insert(2);
st.insert(5);
st.insert(4);
st.clear();//清空set
printf("%d",st.size());
}1
0