为什么我无法在C++中将一个迭代器分配给另一个迭代器?
Why can't I assign one iterator to another in C++?
我正在编写这个函数
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 的开头,这是我函数中的一个参数。
问题出在行str_b = begin(s);
- 代码不使用它编译。为什么会这样,我该如何解决它?
由于s
是const
限定的,begin(s)
返回一个string::const_iterator
:
string::const_iterator str_b;
str_b = begin(s);
或者更好的是,让我们auto
从初始值设定项推断出str_b
的类型:
auto str_b = begin(s);
s
是常量对象,所以
begin(s)
返回string::const_iterator
,不能将string::const_iterator
分配给string::iterator
。你可以通过以下方式修复它
string::const_iterator str_b;
相关文章:
- 不明白迭代器,引用和指针失效,一个例子
- 为什么 C++ std::unordered_map 从 emplace/ 找到返回一个迭代器?
- 为什么我的模板化函数需要从一个迭代器转换到另一个迭代器?
- 我可以将迭代器递增一个整数吗?
- 使用一个 for 循环如何迭代和测试迭代器值?
- 测试迭代器是否位于列表中的最后一个
- 转到基于范围的 for 循环中的下一个迭代器
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- C++ 为 costum 类创建一个 const 迭代器
- 有没有一个迭代器的例子,它不会使用 ptrdiff_t 作为其difference_type?
- C++:在进行切片时对迭代器的约定,特别是对于访问最后一个元素并最终将其删除
- 使用迭代器进行合并排序中的一个缓冲区
- 对于C字符串,是否有一个标准的C++迭代器
- 创建一个简单的前向迭代器,该迭代器在循环缓冲区的"end"处自动换行
- 迭代器或反向器的一个变量
- C++链表最后一个元素的迭代器?
- 为什么此函数返回一个link_type但它被声明为迭代器
- 如果我有一个指向矢量元素的指针,而不是迭代器,如何删除它?
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- 每个花哨的指针都应该是一个迭代器吗?