您的位置:首页 > 其它

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

2015-08-06 10:46 351 查看
描述
题目标题:将两个整型数组按照升序合并,并且过滤掉重复数组元素详细描述:接口说明原型: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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: