[c++]对vector<T>容器求交集,并集,去重
#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>容器求交集,并集,去重的更多相关文章
- SQL求 交集 并集 差集
故事是这样的….. 故事情节: 表 tb_test 有两列, colA , colB; 求 colA , colB 的并交差集… -- 计算并集 SELECT DISTINCT colB FROM t ...
- stl set求交集 并集 差集
#include <iostream>#include <set> using namespace std; typedef struct tagStudentInfo{ i ...
- 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 ...
- 如何求ArrayList集合的交集 并集 差集 去重复并集
需要用到List接口中定义的几个方法: addAll(Collection<? extends E> c) :按指定集合的Iterator返回的顺序将指定集合中的所有元素追加到此列表的末尾 ...
- 【C++】Vector判断元素是否存在,去重,求交集,求并集
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> //sort函数.交并补函数 4 ...
- python 两个list 求交集,并集,差集
def diff(listA,listB): #求交集的两种方式 retA = [i for i in listA if i in listB] retB = list(set(listA).inte ...
- Python 求两个文本文件以行为单位的交集 并集 差集
Python 求两个文本文件以行为单位的交集 并集 差集,来代码: s1 = set(open('a.txt','r').readlines()) s2 = set(open('b.txt','r') ...
- java(List或Array数组)求交集、并集、差集, 泛型工具类
业务需要求不同类型的交集.并集.差集为避免代码冗余编写工具类. 注:list 转数组需传入数组,如果将原数组传入将会改变原数组的值,同时泛型数组又不可以实例化,解决方案:Arrays.copyOf(n ...
- js求对象数组的交集/并集/差集/去重
1.求交集 var arr1 = [{name:'name1',id:1},{name:'name2',id:2},{name:'name3',id:3}]; var arr1Id = [1,2,3] ...
随机推荐
- 【TCP/IP】之Java socket编程API基础
Socket是Java网络编程的基础,深入学习socket对于了解tcp/ip网络通信协议很有帮助, 此文讲解Socket的基础编程.Socket用法:①.主要用在进程间,网络间通信. 文章目录如下: ...
- Postman 中 Pre-request Script 常用 js 脚本
1. 生成一个MD5或SHA1加密的字符串str_md5,str_sha1 string1 = "123456"; var str_md5= CryptoJS.MD5(string ...
- Java对象的创建过程:类的初始化与实例化
一.Java对象创建时机 我们知道,一个对象在可以被使用之前必须要被正确地实例化.在Java代码中,有很多行为可以引起对象的创建,最为直观的一种就是使用new关键字来调用一个类的构造函数显式地创建对象 ...
- 【Python】【Module】random
mport random print random.random() print random.randint(1,2) print random.randrange(1,10) 随机数 import ...
- 如何使用pycharm克隆阿里云项目
我们回到PyCharm刚打开时的界面,如图1-1所示: 点击"Check out from Version Control" => "Git",如图1 ...
- request获取请求参数通用方式
package com.hopetesting.web.request;import javax.servlet.ServletException;import javax.servlet.annot ...
- 部署应用程序到Tomcat的webapps目录
一.方法如下 1.通过MyEclipse上方工具栏Manage Deployments,依次选择项目和服务器: 2.通过右击项目Export,生成war包到webapps中: 3.复制项目WebRoo ...
- 2. Go中defer使用注意事项
1. 简介 defer 会在当前函数返回前执行传入的函数,它会经常被用于关闭文件描述符.关闭数据库连接以及解锁资源. 理解这句话主要在三个方面: 当前函数 返回前执行,当然函数可能没有返回值 传入的函 ...
- PowerDotNet平台化软件架构设计与实现系列(07):数据同步平台
上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务.但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑.分页.批量多次处理,改造为耗时较小的适合使用RESTfu ...
- C#汉字转汉语拼音
一.使用PinYinConverterCore获取汉语拼音 最新在做一个搜索组件,需要使用汉语拼音的首字母查询出符合条件的物品名称,由于汉字存在多音字,所以自己写查询组件不太现实,因此,我们使用微软提 ...