107k views
0 votes
Write a functionvector merge(vector a, vector b)that merges two vectors, alternating elements from both vectors. If one vector isshorter than the other, then alternate as long as you can and then append the remaining elements from the longer vector. For example, if a is 1 4 9 16and b is9 7 4 9 11then merge returns the vector1 9 4 7 9 4 16 9 1118. Write a predicate function bool same_elements(vector a, vector b)that checks whether two vectors have the same elements in some order, with the same multiplicities. For example, 1 4 9 16 9 7 4 9 11 and 11 1 4 9 16 9 7 4 9 would be considered identical, but1 4 9 16 9 7 4 9 11 and 11 11 7 9 16 4 1 would not. You will probably need one or more helper functions.19. What is the difference between the size and capacity of a vector

User Modermo
by
4.2k points

1 Answer

5 votes

Answer:

see explaination for code

Step-by-step explanation:

CODE

#include <iostream>

#include <vector>

using namespace std;

vector<int> merge(vector<int> a, vector<int> b) {

vector<int> result;

int k = 0;

int i = 0, j = 0;

while (i < a.size() && j < b.size()) {

if (k % 2 == 0) {

result.push_back(a[i ++]);

} else {

result.push_back(b[j ++]);

}

k ++;

}

while (i < a.size()) {

result.push_back(a[i ++]);

}

while(j < b.size()) {

result.push_back(b[j ++]);

}

return result;

}

int main() {

vector<int> a{1, 4, 9, 16};

vector<int> b{9, 7, 4, 9, 11};

vector<int> result = merge(a, b);

for (int i=0; i<result.size(); i++) {

cout << result[i] << " ";

}

}

User VertigoRay
by
5.7k points