整形数组合并(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 |
删除重复元素,首先将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;
}
相关文章推荐
- Leetcode学习之Maximal Square(221)
- 程序员老鸟写sql语句的经验之谈
- javaScript常用运算符和操作符总结
- Eclipse中项目编码格式转换(转码)
- 小技巧
- 南邮 OJ 1702 农田开发
- Nginx 是如何为性能和规模做设计的?
- Sping3.0版本+Quartz完成定时任务
- Android虚拟机环境搭建
- git push 的使用
- poj1459 Power Network(最大流)
- ubuntu软件更新器更新内核时出现"/boot磁盘空间不足"的情况原因及解决办法
- opencontrail本地编译定义标签
- 去掉searchbar边框线
- Ignatius and the Princess II
- hdu 5347
- 19个实用的Android开发工具
- HDU-1166 敌兵布阵【简单线段树-单点更新+区间查询】
- HDOJ--1728--逃离迷宫(广搜)
- 注册dll的bat文件