Peck Chen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

两集合的合并

虽然不太熟悉STL

但用STL就很快A了...

主要用到set_union(a.begin(), a.end(), b.begin(), b.end(), insert_iterator<set<typename> >(c, c.begin()));

set<typename>后一定要加空格...不然会当成位操作符>>...

 

2010-11-21 22:19:44    Accepted    1412    46MS    1620K    804 B    G++    Y

 

 

代码
#include <iostream>
#include
<set>
#include
<iterator>
using namespace std;

/* 输出集合里的元素 */
void output(set<int> &S)
{
int size;
set<int>::iterator it = S.begin();

size
= S.size();
while ( size-- )
{
cout
<< *it;
if ( size )
{
putchar(
' ');
}
it
++;
}
putchar(
'\n');
}

int main()
{
int n, m, elem;
set<int> A, B, C;

while (scanf("%d%d", &n, &m) == 2)
{
while ( n-- )
{
scanf(
"%d", &elem);
A.insert( elem );
/* 装入集合中 */
}
while ( m-- )
{
scanf(
"%d", &elem);
B.insert( elem );
/* 装入集合中 */
}
/* 集合的合并 */
set_union(A.begin(), A.end(), B.begin(), B.end(),
insert_iterator
<set<int> >(C, C.begin()));
/* 输出 */
output( C );

A.clear();
B.clear();
C.clear();
}
}

 

posted on 2010-11-21 22:25  PeckChen  阅读(314)  评论(0编辑  收藏  举报