整形数组合并(STL vector删除重复元素)

描述

题目标题:

将两个整型数组按照升序合并,并且过滤掉重复数组元素

详细描述:

接口说明

原型:

voidCombineBySort(int* pArray1,intiArray1Num,int* pArray2,intiArray2Num,int* pOutputArray,int* iOutputNum);

输入参数:

    int* pArray1 :整型数组1

     intiArray1Num:数组1元素个数

     int* pArray2 :整型数组2

     intiArray2Num:数组2元素个数

输出参数(指针指向的内存区域保证有效):

    int* pOutputArray:合并后的数组

     int* iOutputNum:合并后数组元素个数

返回值:

    void

 

 

知识点 排序,数组
运行时间限制 10M
内存限制 128
输入

输入说明,按下列顺序输入:
1 输入第一个数组的个数
2 输入第一个数组的数值
3 输入第二个数组的个数
4 输入第二个数组的数值

输出

输出合并之后的数组

样例输入 3 1 2 5 4 -1 0 3 2
样例输出 -101235

STL提供了很多实用的算法,这里主要讲解sort和unique算法。

删除重复元素,首先将vector排序。

sort( vec.begin(), vec.end() );

然后使用unique算法。

 vec.erase( unique( vec.begin(), vec.end() ), vec.end() );

unique返回值是重复元素的开始位置。

如果vector中存储的元素是自定义的结构或者是类,那么就需要重载操作符。


#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int num1;
    int num2;
    int i;
    int con;
    vector<int>vec;
    cin>>num1;
    for(i=0;i<num1;i++)
    {
        cin>>con;
        vec.push_back(con);
    }
    cin>>num2;
    for(i=0;i<num2;i++)
    {
        cin>>con;
        vec.push_back(con);
    }
    sort(vec.begin(),vec.end());
    vec.erase(unique(vec.begin(),vec.end()),vec.end());
    vector<int>::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
    {
        cout<<*it;
    }
    return 0;
}

你可能感兴趣的:(Algorithm,C++,vector,unique,earse)