How to merge two sorted vectors in C++

3 Answers

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

std::vector<int> mergeVectors(const std::vector<int>& vec1, const std::vector<int>& vec2) {
    std::vector<int> mergedVector;
    
    int size1 = vec1.size();
    int size2 = vec2.size();
    int index1 = 0, index2 = 0; 

    while (index1 < size1 && index2 < size2) {
        if (vec1[index1] <= vec2[index2]) {
            mergedVector.push_back(vec1[index1]);
            index1++;
        } else {
            mergedVector.push_back(vec2[index2]);
            index2++;
        }
    }

    while (index1 < size1) {
        mergedVector.push_back(vec1[index1]);
        index1++;
    }

    while (index2 < size2) {
        mergedVector.push_back(vec2[index2]);
        index2++;
    }

    return mergedVector;
}

int main() {
    std::vector<int> vec1 = {1, 3, 5, 6, 9, 10, 12, 13};
    std::vector<int> vec2 = {1, 2, 4, 7, 8, 9};

    std::vector<int> merged = mergeVectors(vec1, vec2);

    for (int num : merged) {
        std::cout << num << " ";
    }
}



     
/*
run:
     
1 1 2 3 4 5 6 7 8 9 9 10 12 13 
    
*/

 



answered May 29, 2023 by avibootz
0 votes
#include <algorithm>
#include <iostream>
#include <vector>
 
void mergeVectors(std::vector <int> &vec1, std::vector <int> &vec2) {
    int vec1size = vec1.size();
    int vec2size = vec2.size();
    
    vec1.resize(vec1size + vec2size);
    
    for (int i = 0 ; i < vec2size ; i++)
        vec1[i + vec1size] = vec2[i];
        
    std::sort(vec1.begin(), vec1.end());
}
 
int main() {
    std::vector<int> vec1 = {1, 3, 5, 6, 9, 10, 12, 13};
    std::vector<int> vec2 = {1, 2, 4, 7, 8, 9};
    
    mergeVectors(vec1, vec2);

    for (int num : vec1) {
        std::cout << num << " ";
    }
}
 
 
 
      
/*
run:
      
1 1 2 3 4 5 6 7 8 9 9 10 12 13 
     
*/

 



answered Jan 23, 2024 by avibootz
0 votes
#include <algorithm>
#include <iostream>
#include <vector>
 
int main() {
    std::vector<int> vec1 = {1, 3, 5, 6, 9, 10, 12, 13};
    std::vector<int> vec2 = {1, 2, 4, 7, 8, 9};
    std::vector<int> mergedVec;

    mergedVec.reserve(vec1.size() + vec2.size());

    std::merge(vec1.begin(), vec1.end(), vec2.begin(), vec2.end(), std::back_inserter(mergedVec));

    for (const auto& num : mergedVec) {
        std::cout << num << " ";
    }
}
 
 
 
      
/*
run:
      
1 1 2 3 4 5 6 7 8 9 9 10 12 13 
     
*/

 



answered May 21, 2024 by avibootz

Related questions

2 answers 255 views
1 answer 242 views
2 answers 260 views
1 answer 139 views
2 answers 114 views
114 views asked Oct 9, 2024 by avibootz
...