Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c+中的迭代器运算+; 我在从ANSI C和数组到C++的一些行代码中有一些问题。_C++_Iterator_Std - Fatal编程技术网

c+中的迭代器运算+; 我在从ANSI C和数组到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

为了沿着数组元素进行迭代操作,我在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[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.
}