Я пытался реализовать структуру дерева сортировки слиянием, но всякий раз, когда я пытаюсь слить дочерний вектор с родительским вектором, я получаю ошибку компиляции. Я застрял здесь.
class merge_sort_tree {
vector<int>input;
vector<vector<int> >tr;
int n;
public:
merge_tree(vector<int >p) {
n = p.size();
input = p;
tr.resize(5 * n);
}
void build(int root, int l, int r) {
if (l == r)
{
tr[root] = {input[l]};
}
int m = l + (r - l) / 2;
build(2 * root, l, m);
build(2 * root + 1, m + 1, r);
//temporary vector for merging child vectors
vector<int>tmp(tr[2 * root].size() + tr[2 * root + 1].size());
// merging child vector and storing result in tmp
merge(tr[2 * root].begin(), tr[2 * root].end(),
tr[2 * root + 1].begin(), tr[2 * root + 1].end(),
tmp.begin(), tmp.end() );
tr[root]=tmp;
}
};
![enter image description here](https://i.stack.imgur.com/RqfRQ.png)
В файле, включенном в c: \ mingw \ lib \ gcc \ mingw32 \ 6.3 .0 \ include \ c ++ \ bits \ stl_algobase.h: 71: 0 из c: \ mingw \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ bits \ char_traits.h: 39, из c: \ mingw \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ ios: 40, c: \ mingw \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ mingw32 \ bits \ stdc ++. h: 52 из C: \ Users \ Ayuu \ Desktop \ codes \ test3. cc: 1: c: \ mingw \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ bits \ предопределенный_ops.h: в экземпляре 'constexpr bool __gnu_cxx :: __ ops :: _ Iter_comp_iter <_Compare> :: operator () (_ Iterator1, _Iterator2) [с _Iterator1 = __gnu_cxx :: __ normal_iterator>; _Iterator2 = __gnu_cxx :: __ normal_iterator>; _Compare = __gnu_cxx :: __ normal_iterator>] ': c: \ mingw \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ bits \ stl_al go .h: 4751: 14: требуется из' _OutputIterator std: : __ merge (_InputIterator1, _InputIterator1, _InputIterator2, _InputIterator2, _OutputIterator, _Compare) [with _InputIterator1 = __gnu_cxx :: __ normal_iterator>; _InputIterator2 = __gnu_cxx :: __ normal_iterator>; _OutputIterator = __gnu_cxx :: __ normal_iterator>; _Compare = __gnu_cxx :: __ ops :: _ Iter_comp_iter <__ gnu_cxx :: __ normal_iterator>>] 'c: \ mingw \ lib \ gcc \ mingw32 \ 6.3.0 \ include \ c ++ \ bits \ stl_al go .h: 4858: 37: требуется от '_OIter std :: merge (_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare) [с _IIter1 = __gnu_cxx :: __ normal_iterator>; _IIter2 = __gnu_cxx :: __ normal_iterator>; _OIter = __gnu_cxx :: __ normal_iterator>; _Compare = __gnu_cxx :: __ normal_iterator>] 'C: \ Users \ Ayuu \ Desktop \ codes \ test3. cc: 43: 38: необходимо отсюда c: \ mingw \ lib \ gcc \ mingw32 \ 6.3. 0 \ include \ c ++ \ bits \ предопределенный_ops.h: 123: 18: ошибка: нет совпадения для вызова '(__gnu_cxx :: __ normal_iterator>) (int &, int &)' {return bool (_M_comp (* __ it1, * __ it2)) ; }