gpt4 book ai didi

c++ - 无法编译合并排序树结构?

转载 作者:行者123 更新时间:2023-12-02 10:52:56 25 4
gpt4 key购买 nike

I was trying to implement merge sort tree structure but whenever i try to merge child vector to parent vector i get compilation error . I am stuck here .


 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

在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 \ predefined_ops.h:在'constexpr bool __gnu_cxx::__ ops::_ Iter_comp_iter <_Compare>::operator()(_ Iterator1,_Iterator2 )[with _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_algo.h:4751:14:从'_OutputIterator std::__ merge(_InputIterator1,_InputIterator1,_InputIterator2,_InputIterator2,_OutputIterator,_Compare)需要[使用_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_algo.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 \ predefined_ops.h:123:18:错误:对'(__gnu_cxx::__ normal_iterator>)(int&,int&)'的调用不匹配
{return bool(_M_comp(* __ it1,* __ it2)); }

最佳答案

看这行,它期望一个迭代器,您给了2
错误:调用'(__gnu_cxx::__ normal_iterator>)(int&,int&)'不匹配{return bool(_M_comp(* __ it1,* __ it2)); }

从合并函数中删除tmp.end()。它需要5个参数而不是6个。

    merge(tr[2 * root].begin(), tr[2 * root].end(),
tr[2 * root + 1].begin(), tr[2 * root + 1].end(),
tmp.begin());

这应该工作。

关于c++ - 无法编译合并排序树结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61370949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com