我有一个非常基础的问题。我想在函数中使用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()
迭代器是常数。
提前感谢!
const_iterator
,否则,您应该使用iterator
。 - GWWfirst
会被修改,但不会修改last
,所以我应该只为last
参数使用const_iterator
吗?我编写代码的方式通常正确吗? - MikeLfirst
或last
,而是关于修改它们所指向的内容,当你将值设置为10
时,显然就会发生这种情况。 - Christian Rau