I have merge function which is a non-class.
Merge.cpp
template <typename T>
vector<T> merge(vector<T> left, vector<T> right){
vector<T> result;
int left_current = 0, right_current = 0;
while(left_current < left.size() && right_current < right.size()){
if(left[left_current] <= right[right_current]){
result.push_back(left[left_current]);
left_current++;
}else{
result.push_back(right[right_current]);
right_current++;
}
}
while(left_current < left.size()){
result.push_back(left[left_current]);
left_current++;
}
while(right_current < right.size()){
result.push_back(right[right_current]);
right_current++;
}
return result;
}
template <typename T>
vector<T> merge_sort(vector<T> arr){
vector<T> left, right, result;
if(arr.size() <= 1)
return arr;
int middle = arr.size() / 2;
for(int i=0;i<middle;i++){
left.push_back(arr[i]);
}
for(int i=middle;i<arr.size();i++){
right.push_back(arr[i]);
}
left = merge_sort(left);
right = merge_sort(right);
arr = merge(left,right);
return arr;
}
Normally, I am calling merge in main like this way.
vector<int> sorted_vector=merge_sort(my_vector);
But, I want to call in main like this way.
my_vector.merge_sort()
For calling in second way, I taught I need a member function which takes no parameters and arguments of Sorter class. So, I implemented my member function like following.
Sorter.cpp
template<typename T>
void Sorter<T>::merge_sort(){
vector<int> sorted_vector = merge_sort(my_vector_2);
}
I made a research and I found this is about helper functions but I could not figure it out.Is my approach is correct ?