c ++ 11:为什么不能遍历const引用向量?

时间:2017-03-11 19:45:29

标签: c++ vector reference const

案例如下:

void func(const std::vector<std::string>& vec){
  for(std::vector<std::string>::iterator it = vec.begin();it != vec.end();it++){
    //TODO
  }
}

我的IDE报告错误:

error: conversion from ‘std::vector<std::__cxx11::basic_string<char> >::const_iterator {aka __gnu_cxx::__normal_iterator<const std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >}’ to non-scalar type ‘std::vector<std::__cxx11::basic_string<char> >::iterator {aka __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > >}’ requested

我定义的迭代器的类型似乎与引用变量vec.begin()的类型不一致。为了保护引用的向量,我添加了关键字 const ,但我无法弄明白。我错过了c ++的任何基本要素吗?任何建议将非常感谢=)

0 个答案:

没有答案