使用迭代器返回字符串的引用

时间:2016-01-29 19:40:27

标签: c++ iterator

我在这个向量上有一个包含字符串的向量,一个迭代器(_it),我希望使用这个迭代器返回一个字符串的引用。

目前,返回是通过复制:

std::string myClass::next_token()
{
  std::vector<std::string>::const_iterator old_it = _it++;
  return *old_it;
}

我想这样做(注意返回类型的&

std::string& myClass::next_token() 
{
//...
}

但是我收到以下错误:

  

类型‘std::string& {aka std::basic_string<char>&}’的表达式‘const std::basic_string<char>’ std::string& token = *old_it类型的引用无效初始化

2 个答案:

答案 0 :(得分:3)

const_iterator永远不会为您提供非const参考;您需要使用普通iterator或返回const string &

答案 1 :(得分:2)

您无法从+创建string&,因为const string &无法修改。获得const string &的原因是您使用的是const string &。如果您将代码更改为

const_iterator