有人可以向我解释编译器我正在编译C ++程序中提到的以下错误主要是与向量有关的错误吗?

问题描述

我正在尝试解决的问题-

“您将获得一棵包含N个节点的根树。每个节点都包含一个小写字母。 您需要回答类型为u,c的Q查询,其中u是整数,c是小写字母。包含c的节点u的子树中的节点数被视为所有查询的答案。 “

#include<bits/stdc++.h>
using namespace std;

void count(vector<vector<int>> *v,int par,string s,int arr[][26])
{
    if(v[par].size()==0)
    {
        arr[par][s[par-1]-'a']++;
        return;
    }
        
    arr[par][s[par-1]-'a']++;
    for(int i=0;i<v[par].size();i++)
    {
        count(&v,v[par][i],s,&arr);
        for(int j=0;j<26;j++)
        {
            arr[par][j]=arr[v[par][i]][j]+arr[par][j];
        }
    }
}
int main()
{
    int n,q,par,child,arr[100010][26]={};
    char alphabet;
    cin>>n>>q;
    string s;
    cin>>s;
    vector<vector<int>> v={};
    while(n--)
    {
        cin>>par>>child;
        v[par].push_back(child);
    }
    count(&v,1,&arr);
    while(q--)
    {
        cin>>par>>alphabet;
        cout<<arr[par][alphabet-'a']<<"\n";
    }
}

现在是错误

In function ‘void count(std::vector<std::vector<int> >*,int,std::__cxx11::string,int (*)[26])’:
13:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]


15:28: error: no matching function for call to ‘count(std::vector<std::vector<int> >**,__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> > >::value_type&,std::__cxx11::string&,int (**)[26])’


4:6: note: candidate: void count(std::vector<std::vector<int> >*,int (*)[26])


4:6: note:   no kNown conversion for argument 1 from ‘std::vector<std::vector<int> >**’ to ‘std::vector<std::vector<int> >*’
62:0,64,1:
3959:5: note: candidate: template<class _IIter,class _Tp> typename std::iterator_traits<_Iterator>::difference_type std::count(_IIter,_IIter,const _Tp&)


3959:5: note:   template argument deduction/substitution Failed:
15:28: note:   deduced conflicting types for parameter ‘_IIter’ (‘std::vector<std::vector<int> >**’ and ‘std::vector<int>’)


18:19: error: no match for ‘operator[]’ (operand types are ‘int (*)[26]’ and ‘__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> > >::value_type {aka std::vector<int>}’)


 In function ‘int main()’:
35:19: error: no matching function for call to ‘count(std::vector<std::vector<int> >*,int (*)[100010][26])’


4:6: note: candidate: void count(std::vector<std::vector<int> >*,int (*)[26])


4:6: note:   no kNown conversion for argument 4 from ‘int (*)[100010][26]’ to ‘int (*)[26]’
62:0,const _Tp&)


3959:5: note:   template argument deduction/substitution Failed:
35:19: note:   deduced conflicting types for parameter ‘_IIter’ (‘std::vector<std::vector<int> >*’ and ‘int’)


解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)