关于数据中选择无重复数
来源:互联网 发布:淘宝直播开通入口 编辑:程序博客网 时间:2024/04/30 03:08
前几天,在做一个项目时从oracle海量数据中选择符合条件的数据,用到select distinct 改成c++语言;代码简化如下:
void select_distinct(vector<string> &ints)//实现select distinct的函数
{
sort(ints.begin(),ints.end());
vector<string>::iterator end_unique=unique(ints.begin(),ints.end());
ints.erase(end_unique,ints.end());
}
之前自己的思路是,将里面重复的选择放在一块,没有重复放在一起然后将他们在组合起来,代码如下:
void find_diff(vector<string> &ints,vector<string> &final_ints)
{
vector<string> ints_1;//存储相同的数
vector<string> ints_2;//存储不同的数
for(vector<string>::size_type i=0;i!=ints.size()-1;++i)//找到其中重复的数并单一的存储在ints_1(2,5)中
{
for (vector<string>::size_type j=i+1;j!=ints.size();++j)
{
if (ints[i]==ints[j])
{
if (ints_1.size()==0)
{
ints_1.push_back(ints[j]);
}
else
{
for (int tmp=0;tmp!=ints_1.size();++tmp)
{
if (ints[j]==ints_1[tmp])
break;
else if (ints[j]!=ints_1[tmp]&&tmp==ints_1.size()-1)//与存储的遍历一遍后都不相同,在最后时添加
ints_1.push_back(ints[j]);
}
}
}
}
}
for(vector<string>::size_type i=0;i!=ints.size();++i)
{
for (vector<string>::size_type j=0;j!=ints_1.size();++j)
{
if (ints[i]==ints_1[j])
break;
if (ints[i]!=ints_1[j]&&j==ints_1.size()-1)
{
ints_2.push_back(ints[i]);
}
}
}
for(int i=0;i!=ints_1.size()+ints_2.size();++i)//输出不重复的
{
if (i<ints_1.size())
{
final_ints.push_back(ints_1[i]);
}
else
final_ints.push_back(ints_2[i-ints_1.size()]);
}
}
在一些数据中是可以的,但是当容器中只有一个值时明显不符合情况:
for(vector<string>::size_type i=0;i!=ints.size();++i)
{
for (vector<string>::size_type j=0;j!=ints_1.size();++j)
可以加上判断条件:
for(vector<string>::size_type i=0;i!=ints.size();++i)
{
if(ints_1.size()!=0)
{
for (vector<string>::size_type j=0;j!=ints_1.size();++j)
{
if (ints[i]==ints_1[j])
break;
if (ints[i]!=ints_1[j]&&j==ints_1.size()-1)
{
ints_2.push_back(ints[i]);
}
}
}
else
{
ints_2.push_back(ints[i]);
}
}
然后对于空容器来说类似的
if (ints.size()==0)
{
}
else
这个只是自己的一个比较繁琐的思路。
总结下:
多看书,自己慢慢进步;
算法中提到的sort函数,unique函数等都是见到后想到的,希望自己多留心多学习。网站学习http://blog.csdn.net/byrsongQQ/article/details/5855090
- 关于数据中选择无重复数
- 无重复数java
- 关于Oracle中重复数据的处理
- mysql关于排除表中重复数据
- 关于MySql删除表中重复数据
- Group by 分组选择表中重复的数据
- 二分查找-有重复数和无重复数
- 关于mysql中数据引擎的选择
- 关于记录数组中出现重复数的个数
- 统计list中重复数据的条数
- 在[1,n]中随机取m个无重复数的Bob Floyd算法
- 在无重复数字的循环数组中查找给定数返回其下标
- 一道关于删除数据表中重复数据的笔试题
- 一道关于删除数据表中重复数据的笔试题
- 关于list中存储map数据重复问题
- 去除重复数据,选择第一条数据
- 关于计算机中无符号数,有符号数的注意事项
- 关于java中有符号数转换成无符号数的相关问题
- 逆向工程
- Qt 出现“undefined reference to `vtable for”原因总结
- 关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
- 且行且珍重
- TI DAVINCI开发原理(总共5部分)
- 关于数据中选择无重复数
- jquery DWZ富客户端框架
- Cookie、session、session+mysql
- 两个C++编译错误及解决办法--does not name a type和field `XX' has incomplete type
- bar——Plot bar graph horizontally
- C51之局部变量和全局变量小记
- 减少购物车中的商品数量
- 如何用javac 和java 编译运行整个Java工程
- PHP 遍历目录下的所有文件的方法