C++判断元素是否在vector中,对vector去重,两个vector求交集并集

Posted myyismyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++判断元素是否在vector中,对vector去重,两个vector求交集并集相关的知识,希望对你有一定的参考价值。

#include <iostream>
#include <vector>
#include <algorithm> //sort函数、交并补函数
#include <iterator> //求交并补使用到的迭代器
using namespace std;

//打印容器vector
void print_vector(vector<int> v){
    if(v.size()>0){
        cout<<"{";  
        for(int i=0;i<int(v.size());i++){  
            cout<<v[i]<<",";  
        }  
        cout<<"\b}";  
    }
    else{
        cout<<"{}";
    }
}

//容器vector中元素的去重
vector<int> unique_element_in_vector(vector<int> v){
    vector<int>::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<int> vectors_intersection(vector<int> v1,vector<int> v2){
    vector<int> 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<int> vectors_set_union(vector<int> v1,vector<int> v2){
    vector<int> 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<int> v,int element){
    vector<int>::iterator it;
    it=find(v.begin(),v.end(),element);
    if (it!=v.end()){
        return true;
    }
    else{
        return false;
    }
}

int main(){
    vector<int> v1,v2,v;
    v1.push_back(22);v1.push_back(22);v1.push_back(23);v2.push_back(23);v2.push_back(24);
    cout<<"v1是否存在1这个元素?"<<is_element_in_vector(v1,1)<<endl;
    cout<<"对v1去重:";
    v1=unique_element_in_vector(v1);
    print_vector(v1);
    cout<<endl;
    cout<<"求v1与v2的交集:";
    v=vectors_intersection(v1,v2);
    print_vector(v);
    cout<<endl;
    cout<<"求v1与v2的并集:";
    v=vectors_set_union(v1,v2);
    print_vector(v);
    return 0;
}

 

以上是关于C++判断元素是否在vector中,对vector去重,两个vector求交集并集的主要内容,如果未能解决你的问题,请参考以下文章

C++中如何对vector删除元素

C++学习-vector容器的容量和大小

C++ 中vector的重要特点——对象动态增长

对 Vector 元素的 push_back 操作 (C++)

c++ 用vector 定义二维数组

C++中,vector参数为类型时,如何查找和添加元素?