向量的合并

Problem F: 向量的合并

Problem F: 向量的合并

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 771   Solved: 588
[ Submit][ Status]

Description

定义Vec类,是由int类型的数据组成的向量,重载其输入、输出运算符,以及加法运算符。
其中,输入一个整型向量时,输入的是一个非减排序的整数序列,其中包含重复值,在输入时,重复值只保留1个,即Vec类中的向量是递增排序且不含重复值的。
输出时,两两之间用一个空格隔开。
加法运算,将两个Vec类的对象中的整型向量合并为一个不含重复值的递增序列,不能修改两个操作数的值。

Input

输入有2行。每行是一个向量。
每行第一个值是一个正整数N>0,表示后面有N个输入的整数。

Output

见样例

Sample Input

10 1 1 1 3 3 3 4 5 8 8
5 1 2 3 4 5

Sample Output


v1:1 3 4 5 8

v2:1 2 3 4 5
v1:1 3 4 5 8
v2:1 2 3 4 5
v3:1 2 3 4 5 8

#include <iostream>
#include <algorithm>
#include <vector>
#include <iomanip>
#include<typeinfo>
#include<cmath>
#include<set>
#include<math.h>
 
using namespace std;
 
 
class Vec{
 
public:
     set<int> c;
 
    friend ostream& operator<< (ostream &os, Vec &v){
 
        set<int>::iterator it;
        it = v.c.begin();
        os<<*it;
        it++;
        for(it;it!=v.c.end ();it++)
        {
            os<<" "<<*it;
        }
        os << endl;
        return os;
    }
    friend istream &operator>>(istream &is , Vec &v){
 
        int x;
        is >> x;
        int temp =0;
        for(int i=0;i<x;i++){
            is >> temp;
            v.c.insert(temp);
        }
        return is;
    }
    friend Vec operator+(Vec &v1,Vec &v2){
 
        Vec s;
        set<int>::iterator it;
 
        for(it = v1.c.begin();it!=v1.c.end ();it++)
        {
            s.c.insert(*it);
        }
        for(it = v2.c.begin();it!=v2.c.end ();it++)
        {
            s.c.insert(*it);
        }
 
        return s;
 
    }
 
};
int main()
{
    Vec v1, v2, v3;
    cin>>v1;
    cin>>v2;
    cout<<"v1:"<<v1;
    cout<<"v2:"<<v2;
    v3 = v1 + v2;
    cout<<"v1:"<<v1;
    cout<<"v2:"<<v2;
    cout<<"v3:"<<v3;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值