#include "iostream"
#include "vector"
#include "algorithm" //sort函数、交并补函数
#include "iterator" //求交并补使用到的迭代器 using namespace std; //打印容器vector
void print_vector(vector<string> v) {
if (v.size() > 0) {
cout << "{";
for (int i = 0; i < int(v.size()); i++) {
cout << v[i] << ",";
}
cout << "\b}";
} else {
cout << "{}";
}
} //容器vector中元素的去重
vector<string> unique_element_in_vector(vector<string> v) {
vector<string>::iterator vector_iterator;
sort(v.begin(), v.end());
vector_iterator = unique(v.begin(), v.end());
if (vector_iterator != v.end()) {
v.erase(vector_iterator, v.end());
}
return v;
} //两个vector求交集
vector<string> vectors_intersection(vector<string> v1, vector<string> v2) {
vector<string> v;
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v));//求交集
return v;
} //两个vector求并集
vector<string> vectors_set_union(vector<string> v1, vector<string> v2) {
vector<string> v;
sort(v1.begin(), v1.end());
sort(v2.begin(), v2.end());
set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v));//求交集
return v;
} //判断vector的某一元素是否存在
bool is_element_in_vector(vector<string> v, string element) {
vector<string>::iterator it;
it = find(v.begin(), v.end(), element);
if (it != v.end()) {
return true;
} else {
return false;
}
} int trim_z(std::string &s) {
if (s.empty()) {
return 0;
}
s.erase(0, s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1); return 1;
} string trim(string &s) {
string str;
if (!s.empty()) {
s.erase(0, s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1);
}
str = s;
return str;
} void test() {
Json::Value qr_result; //"猴子尾巴", "猴子尾巴", "松鼠尾巴"
//"松鼠尾巴", "猴子尾巴", "猴子尾巴"
vector<string> qr_text;
string s1 = "松鼠尾巴";
string s2 = "猴子尾巴";
string s3 = "猴子尾巴 ";
string text = " 7ter 09, jdhfd iere*- ddw jjdjjdj ";
// trim_z(text); s3 = trim(s3);
// cout << "text==>>" << text << endl;
cout << "s3==>>" << s3 << endl; qr_text.emplace_back(s1);
qr_text.emplace_back(s2);
qr_text.emplace_back(s3); const int s = qr_text.size();
int tempTimes = 0;
Json::Value items;
string name;
for (int j = 0; j < s; ++j) {
string item = qr_text[j];
if (item != "二维码识别失败") {
int times = count(qr_text.begin(), qr_text.end(), item);
cout << "times==>" << times << endl;
if (times > tempTimes) {
tempTimes = times;
name = item;
tempTimes++;
}
}
items.append(item);
}
//封装返回的json信息
qr_result["name"] = name;
qr_result["nname"] = items;
qr_result["score"] = items.size();
qr_result["function"] = "QRcoderecognition";
cout << "json==>>" << qr_result.toStyledString() << endl;
} int main() {
// jiaoji();
// test();
vector<string> vc1{"猴子尾巴", "猴子尾巴", "猴子耳朵", "松鼠脸"};
vector<string> vc2{"猴子尾巴", "猴子耳朵", "松鼠尾巴"};
vector<string> vec; cout << "求v1与v2的交集:";
vec = vectors_intersection(vc1, vc2);
print_vector(vec);
cout << endl;
cout << "求v1与v2的并集:";
vec = vectors_set_union(vc1, vc2);
print_vector(vec);
return 0;
}

[c++]对vector<T>容器求交集,并集,去重的更多相关文章

  1. SQL求 交集 并集 差集

    故事是这样的….. 故事情节: 表 tb_test 有两列, colA , colB; 求 colA , colB 的并交差集… -- 计算并集 SELECT DISTINCT colB FROM t ...

  2. stl set求交集 并集 差集

    #include <iostream>#include <set> using namespace std; typedef struct tagStudentInfo{  i ...

  3. Linux 两个文件求交集、并集、差集

    一.交集 sort a.txt b.txt | uniq -d 二.并集 sort a.txt b.txt | uniq 三.差集 a.txt-b.txt: sort a.txt b.txt b.tx ...

  4. 如何求ArrayList集合的交集 并集 差集 去重复并集

    需要用到List接口中定义的几个方法: addAll(Collection<? extends E> c) :按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾 ...

  5. 【C++】Vector判断元素是否存在,去重,求交集,求并集

    1 #include <iostream> 2 #include <vector> 3 #include <algorithm> //sort函数.交并补函数 4 ...

  6. python 两个list 求交集,并集,差集

    def diff(listA,listB): #求交集的两种方式 retA = [i for i in listA if i in listB] retB = list(set(listA).inte ...

  7. Python 求两个文本文件以行为单位的交集 并集 差集

    Python 求两个文本文件以行为单位的交集 并集 差集,来代码: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r') ...

  8. java(List或Array数组)求交集、并集、差集, 泛型工具类

    业务需要求不同类型的交集.并集.差集为避免代码冗余编写工具类. 注:list 转数组需传入数组,如果将原数组传入将会改变原数组的值,同时泛型数组又不可以实例化,解决方案:Arrays.copyOf(n ...

  9. js求对象数组的交集/并集/差集/去重

    1.求交集 var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}]; var arr1Id = [1,2,3] ...

随机推荐

  1. 【Linux】【Basis】【Kernel】Linux常见系统调用

    一,进程控制 1)getpid,getppid--获取进程识别号 #include <sys/types.h> #include <unistd.h> pid_t getpid ...

  2. spring mvc idea创建

    创建项目 创建项目 --> Spring --> Spring MVC --> 下面选择Download,会显示Spring MVC-5版本 如果是首次使用IDEA,因为没有配置ma ...

  3. canal安装与使用

    安装 alpha的版本不是稳定的版本 wget https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deploye ...

  4. matplotlib画散点图和柱状图,等高线图,image图

    一:散点图: scatter函数原型   其中散点的形状参数marker如下:   其中颜色参数c如下:     n = 1024 # 均值是0, 方差是1, 取1024个数 x = np.rando ...

  5. JSP中session、cookie和application的使用

    一.session (单用户使用) 1.用处:注册成功后自动登录,登录后记住用户状态等 使用会话对象session实现,一次会话就是一次浏览器和服务器之间的通话,会话可以在多次请求中保存和使用数据. ...

  6. [MySQL实战-Mysql基础篇]-mysql架构

    1.基本组成 下面是mysql的基本架构示意图  图一 图二 我们可以从图上看出,mysql大体分为两个部分,一个是server层,另一个是引擎层. server层中包含了连接器.查询缓存.分析器.优 ...

  7. 【力扣】两个数组的交集 II

    给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2: 输入:nums1 = [4,9,5], nu ...

  8. CPU的负载

    目录 一.简介 二.合理的负载 一.简介 使用top或者uptime命令可以看到cpu平均负载,1,5,15分钟 平均负载包括以下几个部分: 正在运行的进程.正在使用cpu做计算的进程,ps看到R 也 ...

  9. shell脚本 screen管理

    一.简介 源码地址 日期:2018/4/12 介绍:使用screen来启动程序,这个脚本可以管理screen 效果图: 二.使用 适用:centos6+ 语言:中文 注意:请先写一个脚本来启动java ...

  10. 从离线分析建模到稳健风控升级,为什么说顶象Dinsight实时风控引擎是对的选择?

    随着金融业数字化程度进一步加深,互联网垂直电商.消费金融等领域与人们生活的深度融合,数字科技在安全风险控制上已经成为了重要的基石.如何主动防范化解风险,建立智能化的实时风险监测预警体系,加速业务模式转 ...