0%

c-set的用法

set的各成员函数列表如下:

  1. begin()–返回指向第一个元素的迭代器

  2. clear()–清除所有元素

  3. count()–返回某个值元素的个数

  4. empty()–如果集合为空,返回true

  5. end()–返回指向最后一个元素的迭代器

  6. equal_range()–返回集合中与给定值相等的上下限的两个迭代器

  7. erase()–删除集合中的元素

  8. find()–返回一个指向被查找到元素的迭代器

  9. get_allocator()–返回集合的分配器

  10. insert()–在集合中插入元素

  11. lower_bound()–返回指向大于(或等于)某值的第一个元素的迭代器

  12. key_comp()–返回一个用于元素间值比较的函数

  13. max_size()–返回集合能容纳的元素的最大限值

  14. rbegin()–返回指向集合中最后一个元素的反向迭代器

  15. rend()–返回指向集合中第一个元素的反向迭代器

  16. size()–集合中元素的数目

  17. swap()–交换两个集合变量

  18. upper_bound()–返回大于某个值元素的迭代器

  19. value_comp()–返回一个用于比较元素间的值的函数

简单应用
1、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<set>
using namespace std;
int main()
{
int a[7]={1,2,1,1,2,3,4},c;
set<int> b;
for(int i=0;i<7;i++)
b.insert(a[i]);


cout<<b.size()<<endl;

set<int>::iterator int1=b.begin();
set<int>::iterator int2=b.end();

for(;int1!=int2;int1++)
cout<<*int1<<" ";
return 0;
}

2、

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
26
27
28
29
30
31
32
33
#include<iostream>
#define maxn 1024
#include<set>
using namespace std;
long long sum=0,f=1;
set<string> sr[maxn];
void per(string s,int n,int k)
{
if(k>=n)
{
for(int i=1;i<=s.length();i++)
{
string s2=s.substr(0,i);
sr[i-1].insert(s2);
}

}
else
for(int i=k;i<n;i++)
{
swap(s[i],s[k]);
per(s,n,k+1);
swap(s[i],s[k]);
}
}
int main()
{
string s1;
cin>>s1;
per(s1,s1.length(),0);
for(int i=0;i<s1.length();i++)
cout<<sr[i].size()<<endl;
}

3、

```c++

#include

#define maxn 1024

#include
using namespace std;
long long sum=0,f=1;
set sr[maxn];
int main()
{
string s1;
cin>>s1;
for(int i=0;i<s1.length();i++)
{
for(int j=1;j<=s1.length();j++)
{
string s2=s1.substr(i,j);
if(s2.length()==j)
sr[j-1].insert(s2);
}
}
for(int i=0;i<s1.length();i++)
sum+=sr[i].size();
cout<<sum;
/*
set::iterator int1=sr[0].begin();
set::iterator int2=sr[0].end();

for(;int1!=int2;int1++)
cout<<*int1<<" ";
return 0;
*/

}