c+中的迭代器运算+; 我在从ANSI C和数组到C++的一些行代码中有一些问题。
为了沿着数组元素进行迭代操作,我在ANSI C中写道:c+中的迭代器运算+; 我在从ANSI C和数组到C++的一些行代码中有一些问题。,c++,iterator,std,C++,Iterator,Std,为了沿着数组元素进行迭代操作,我在ANSI C中写道: int i; struct Sys{ double *v; }; Sys sys; sys.v = malloc(10*sizeof(double)); //initialize the array with some values... {...} for (i = 5; i < 10; i++){ //overwrite the cumulative sum starting from position 4 sys.v
int i;
struct Sys{
double *v;
};
Sys sys; sys.v = malloc(10*sizeof(double));
//initialize the array with some values...
{...}
for (i = 5; i < 10; i++){ //overwrite the cumulative sum starting from position 4
sys.v[i] = sys.v[i] + function_that_return_a_double(i);
}
如果我符合-fppermissive,我会得到:
code.cpp:xxx: warning: name lookup of ‘it’ changed for ISO ‘for’ scoping
code.cpp:yyy: warning: using obsolete binding at ‘it’
我不知道这是否是使用迭代器和STD:vector的正确方法
我希望你能解决我的疑问
干杯
艾尔
:我在C++案例中修正了V的声明。v不是指针!
PPS:代码片段很好!!见下文 您需要将
Sys
声明为结构或类:
struct Sys {
vector<double> *v;
};
当
v
是指针时,sys.v.begin()
如何编译?还有,sys{vector*v;}代码>?您实际上从那里的位置6开始。它应该是sys->v.begin()?对不起,事实上,v在原始代码中不是指针。我纠正了这个问题上的错误。嗨,谢谢你。事实上,v不是指针。我纠正了这个问题。k是每次迭代增长的变量。@altrow是在for循环范围之外访问it
时经常遇到的错误消息。您的代码段很好,您是否在其他地方使用它?很高兴知道代码段很好。实际上,在原始代码中缺少了一个花括号。我吸取了教训,非常感谢。
code.cpp:xxx: warning: name lookup of ‘it’ changed for ISO ‘for’ scoping
code.cpp:yyy: warning: using obsolete binding at ‘it’
struct Sys {
vector<double> *v;
};
Sys sys;
sys.v->resize(10);
for (vector<double>::iterator it = sys.v->begin(); it != sys.v->end(); ++it) {
*it += function_that_returns_a_double(k); // Define k somewhere.
}