使用类型为string的dereferenced Vector迭代器作为函数参数

时间:2013-02-20 15:29:34

标签: c++ string vector iterator dereference

我正在使用

迭代一个向量
std::vector<std::string>::reverse_iterator ritr; 

我需要在某个时候找出此向量中的字符串是否是使用函数

的运算符
bool IsOperator(const std::string s);

当我按照以下方式调用该函数时,

if(IsOperator(*ritr))
eclipse抱怨!

Candidates are: bool IsOperator(char) bool IsOperator(std::basic_string<char,std::char_traits<char>,std::allocator<char>>)

(我有一个重载函数,接受char而不是std::string) 但是,它允许将引用的迭代器存储在字符串

中的操作
std::string str= *ritr;

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

你的代码很好。消除isOperator(char)isOperator(string)之间的歧义不是问题,因为string无法隐式转换为char

我希望你的程序能够编译(如果没有,你还有其他东西没有显示),而IDE抱怨红色曲线只是意味着你的IDE有错误。


另外,一些评论:

  

我有一个std::vector<std::string>

类型的函数

函数不能没有std::vector<std::string>类型。它可以返回类型为std::vector<std::string>的值,或者它可以接受一个值。我想你的意思是后者。

  

bool IsOperator(const std::string s)

此功能签名没有多大意义。您可能意味着接受std::string对象的常量引用

bool IsOperator(std::string const& s)