C++ 为什么可以';在C+中,我将一个迭代器分配给另一个迭代器+;?
我正在写这个函数C++ 为什么可以';在C+中,我将一个迭代器分配给另一个迭代器+;?,c++,iterator,C++,Iterator,我正在写这个函数 vector<string> SplitIntoWords(const string& s) { vector<string> v_str = {}; string::iterator str_b; str_b = begin(s); // TODO some action here return v_str; } 向量拆分为字(常量字符串&s){ 向量v_str={}; 字符串::迭代器str_b;
vector<string> SplitIntoWords(const string& s) {
vector<string> v_str = {};
string::iterator str_b;
str_b = begin(s);
// TODO some action here
return v_str;
}
向量拆分为字(常量字符串&s){
向量v_str={};
字符串::迭代器str_b;
str_b=开始;
//在这里做点什么
返回v_str;
}
我需要声明一个迭代器,它将等于字符串s的开头,这是我函数中的一个参数
问题在于行str_b=begin(s)代码>-代码不能用它编译。为什么会这样?我如何修复它 s
是常量对象,所以
begin(s)
返回string::const_iterator
,不能将string::const_iterator
分配给string::iterator
。你可以用电脑来修理它
string::const_iterator str_b;
由于s
是const
限定的,begin(s)
返回字符串::const\u迭代器
:
string::const_iterator str_b;
str_b = begin(s);
或者更好,让auto
从初始值设定项推断stru b
的类型:
auto str_b = begin(s);
需要#包括。对于const字符串
,需要使用std::const\u迭代器
,而不是std::迭代器
。