STL中的"集合类"的定义使用
STL中的"集合类"的定义使用
return ? out;
}
int ? main(void)
{
// ? create ? a ? set ? of ? doubles
set_type ? ? ? sd;
int ? ? ? ? ? ? ? ? ? i;
for ? (i ? = ? 0; ? i ? < ? 10; ? ++i)? {
// ? insert ? values
sd.insert(i);
}
// ? print ? out ? the ? set
cout ? < < ? sd ? < < ? endl ? < <? endl;
// ? now ? let’s ? erase ? half ? of ? the ?elements ? in ? the ? set
int ? half ? = ? sd.size() ? > > ? 1;
set_type::iterator ? sdi ? = ? sd.begin();
advance(sdi,half);
sd.erase(sd.begin(),sdi);
// ? print ? it ? out ? again
cout ? < < ? sd ? < < ? endl ? < <? endl;
// ? Make ? another ? set ? and ? an ? empty? result ? set
set_type ? sd2, ? sdResult;
for ? (i ? = ? 1; ? i ? < ? 9; ? i++)
sd2.insert(i+5);
cout ? < < ? sd2 ? < < ? endl;
// ? Try ? a ? couple ? of ? set ? algorithms
set_union(sd.begin(),sd.end(),sd2.begin(),sd2.end(),
? ? inserter(sdResult,sdResult.begin()));
cout ? < < ? "Union: " ? < < ? endl? < < ? sdResult ? < < ? endl;
sdResult.erase(sdResult.begin(),sdResult.end());
set_intersection(sd.begin(),sd.end(),
? sd2.begin(),sd2.end(),
? inserter(sdResult,sdResult.begin()));
cout ? < < ? "Intersection: " ? < < ?endl ? < < ? sdResult ? < < ? endl;
return ? 0;
}
Program ? Output
0 ? 1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 8? 9
5 ? 6 ? 7 ? 8 ? 9
6 ? 7 ? 8 ? 9 ? 10 ? 11 ? 12 ? 13
Union:
5 ? 6 ? 7 ? 8 ? 9 ? 10 ? 11 ? 12 ? 13
Intersection:
6 ? 7 ? 8 ? 9
}
}
输出结果:
??????? don`t insert!
??????? 1 student_one
??????? 2 student_two
lower_bound
语法:
iterator lower_bound( const key_type &key );
返回一个指向小于或者等于key值的第一个元素的迭代器
key_comp
语法:
key_compare key_comp();
返回一个用于元素间值比较的函数对象。
max_size
语法:
size_type max_size();
返回当前集合能容纳元素的最大限值。
rbegin
语法:
reverse_iterator rbegin();
返回指向当前集合中最后一个元素的反向迭代器。
rend
语法:
reverse_iterator rend();
返回指向集合中第一个元素的反向迭代器。
size
语法:
size_type size();
返回当前集合中元素的数目。
swap
语法:
void swap( set &object );
交换当前集合和object集合中的元素。
upper_bound
语法:
iterator upper_bound( const key_type &key );
在当前集合中返回一个指向大于Key值的元素的迭代器。
value_comp
语法:
value_compare value_comp();
返回一个用于比较元素间的值的函数对象。
set的集合功能(须#include<algorithm>):
1.两个有序集的并.
set_union(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s,s.begin()));
三个set对象,分别为s1,s2,s.set_union的功能是将s1的某个序列(比如[s1.begin(),s1.end()))与s2的某个序列(比如[s2.begin(),s2.end()))合并,然后把合并序列插入到s中。
2.两个有序集的交.
set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s,s.begin()));
3.两个有序集的差.
set_difference (s1.begin(),s1.end(),s2.begin(),s2.end(),inserter(s,s.begin()));