我有以下非常基本的问题。我想使用 stl 迭代器而不是传统的 C 类型指针来填充函数中的数组。通过 C 风格的方式,我的意思是以下示例:
void f(double* v, size_t n) {
for (int i = 0; i < n; i++)
v[i] = 10; /* a more reasonable value in practice! */
}
我将使用迭代器将其转换为 C++ 样式,如下所示:
void f(vector<double>::const_iterator first, vector<double>::const_iterator last) {
for(vector<double>::iterator it = first; it != last; it++)
*it = 10;
}
但我得到编译错误。如果我使用iterator
而不是const_iterator
问题将得到解决。但是,我想知道这是否是正确的方法?因为我认为迭代器是不变的vector.begin()
。vector.end()
提前致谢!