gpt4 book ai didi

gcc - 将 gcc vector::iterator 传递给函数有什么问题?

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

这在 MSVC 中编译得很好,但 gcc 提示。 The code on ideone .我不明白通过引用传递迭代器有什么问题。

错误

prog.cpp: In function ‘void FindType()’:
prog.cpp:8: error: no matching function for call to ‘FindType(__gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >, __gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >)’
prog.cpp:4: note: candidates are: void FindType(__gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >&, __gnu_cxx::__normal_iterator<Var**, std::vector<Var*, std::allocator<Var*> > >&)
prog.cpp:5: note: void FindType()
prog.cpp:8: error: return-statement with a value, in function returning 'void'

编码
#include <vector>
using namespace std;
class Var {};
void FindType(vector<Var*>::iterator&b, vector<Var*>::iterator&e){}
void FindType()
{
vector<Var*> ls;
return FindType(ls.begin(), ls.end());
}

最佳答案

传递 const 引用。 .begin() 和 .end() 调用返回右值。

修订:但是,正如您在下面的评论中所观察到的,如果 b 是 const 引用,则不能执行++b 。在这种情况下,您下面的想法似乎是最好的:按值传递该迭代器。

关于gcc - 将 gcc vector::iterator 传递给函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9777899/

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