#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. Scala(四)【集合基础入门】

    目录 一.Array 二. List 三.Set 四.Tuple 五.Map 一.Array package com.bigdata.scala.day01 /** * @description: 不 ...

  2. 零基础学习java------day8------javabean编写规范,继承,static关键字,代码块,单例设计模式

    0. 今日内容提要 1. javabean书写规范 javabean:一个普通的类,用来描述事物的类,里面不包含任何的业务逻辑,只是用来存储数据. 比如:Teacher,Student,Mobile. ...

  3. 【leetcode】917. Reverse Only Letters(双指针)

    Given a string s, reverse the string according to the following rules: All the characters that are n ...

  4. ORACLE 本session产生的redo

    select * from v$statname a ,v$mystat bwhere a.STATISTIC# = b.STATISTIC# and a.name = 'redo size';

  5. android Paint 详解

    /**     * Paint类介绍 * * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色, * 样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置方法, * 大体 ...

  6. zabbix实现对主机和Tomcat监控

    #:在tomcat服务器安装agent root@ubuntu:~# apt install zabbix-agent #:修改配置文件 root@ubuntu:~# vim /etc/zabbix/ ...

  7. OpenStack之五: image镜像服务(端口9292)

    官网地址:https://docs.openstack.org/glance/stein/install/install-rdo.html #:创建glance库,并授权 MariaDB [(none ...

  8. Linux下查看JDK安装路径

    在安装好Git.JDK和jenkins之后,就需要在jenkins中进行对应的设置,比如在全局工具配置模块,需要写入JDK的安装路径. 这篇博客,介绍几种常见的在Linux中查看JDK路径的方法... ...

  9. BigDecimal中要注意的一些事

    一.关于public BigDecimal(double val) BigDecimal中三个主要的构造函数 1 public BigDecimal(double val) 将double表示形式转换 ...

  10. .NET6使用DOCFX自动生成开发文档

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...