Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,870 questions

51,793 answers

573 users

How to merge two sorted vectors without duplicates in C++

2 Answers

0 votes
#include <iostream>
#include <vector>
#include <unordered_set>
#include <algorithm>

std::vector<int> merge(std::vector<int> vec1, std::vector<int> vec2) {
    std::unordered_set<int> mergedSet;
    
    for (int num : vec1) {
        mergedSet.insert(num);
    }
    for (int num : vec2) {
        mergedSet.insert(num);
    }

    std::vector<int> mergedVec(mergedSet.begin(), mergedSet.end());
    
    sort(mergedVec.begin(), mergedVec.end());
    
    return mergedVec;
}

int main() {
    std::vector<int> vec1 = {1, 2, 2, 3, 7, 7, 7, 8, 9};
    std::vector<int> vec2 = {0, 0, 4, 4, 4, 5, 6, 7, 7, 8};
    
    std::vector<int> mergedVec = merge(vec1, vec2);
    
    for (int num : mergedVec) {
        std::cout << num << " ";
    }
}


  
  
/*
run:
  
0 1 2 3 4 5 6 7 8 9 
  
*/

 



answered May 29, 2023 by avibootz
edited May 21, 2024 by avibootz
0 votes
#include <iostream>
#include <vector>
#include <set>

std::vector<int> merge_sorted_unique(const std::vector<int>& vec1, const std::vector<int>& vec2) {
    std::set<int> unique_elements(vec1.begin(), vec1.end());
    unique_elements.insert(vec2.begin(), vec2.end());
    
    return std::vector<int>(unique_elements.begin(), unique_elements.end());
}

int main() {
    std::vector<int> vec1 = {1, 2, 2, 3, 7, 7, 7, 8, 9};
    std::vector<int> vec2 = {0, 0, 4, 4, 4, 5, 6, 7, 7, 8};
    
    std::vector<int> mergedVec = merge_sorted_unique(vec1, vec2);
    
    for (int num : mergedVec) {
        std::cout << num << " ";
    }
}



/*
run:
  
0 1 2 3 4 5 6 7 8 9 
  
*/

 



answered May 21, 2024 by avibootz

Related questions

1 answer 109 views
1 answer 184 views
1 answer 201 views
2 answers 217 views
2 answers 139 views
...