错误:“操作符+的无匹配” ,用于列表迭代器 [英] Error: "no match for operator+" , for list iterator

查看:222
本文介绍了错误:“操作符+的无匹配” ,用于列表迭代器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于下面的代码,我得到的行标题中的错误

  while((*(It2 + ).exists){


  void locatetohashtable(std :: list< Element> elist,
int * m,std :: list< Element>& table,
std :: list ; std :: string>& keylist)
{
std :: list< Element> :: iterator It2 = table.begin();
int i = 0;
int k = 0;
std :: list< Element> :: iterator It;
for(It = elist.begin(); It!= elist.end(); ++ It)
{
int code = hash_func(stringIntValue((* It).name) ,* m,i);
while((*(It2 + code))。exists){
i ++;
}
table.insert(*(It2 + i),(* It));
keylist.insert(keylist.begin(),(* It).name);
k ++
}
}

$ c> ++ It



<解决方案

迭代器对于 std :: list 是双向的,因此不会支持 +(int)。唯一支持的移动操作是 ++ -


For the code below, i am getting the error in title for line

while((*(It2 + code)).exists){


void locatetohashtable(std::list<Element> elist,
                       int *m,std::list<Element>& table,
                       std::list<std::string>& keylist )
{        
    std::list<Element>::iterator It2=table.begin();
    int i=0;
    int k=0;
    std::list<Element>::iterator It;
    for(It = elist.begin(); It != elist.end(); ++It)
    {
        int code=hash_func(stringIntValue((*It).name),*m,i);
        while((*(It2 + code)).exists){
            i++;
        }
        table.insert(*(It2+i), (*It));
        keylist.insert(keylist.begin(),(*It).name);
        k++;
    }
}

I am not getting the same error for ++It

What is the problem about?

解决方案

An iterator for an std::list is bidirectional, so it does not support +(int). The only supported move operations are ++ and --.

这篇关于错误:“操作符+的无匹配” ,用于列表迭代器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆