C++ 循环溢出向量大小

C++ 循环溢出向量大小,c++,loops,vector,overflow,break,C++,Loops,Vector,Overflow,Break,我有两个向量,一个是全局向量,另一个是局部向量。我需要将元素从局部向量复制到全局向量,顺序是1,4,7。。。在本地一个是大小为6的数组。我的代码运行良好,但它总是进行一次以上的迭代,从而导致加载错误的数据。在最后一次迭代中,它还复制了错误的数据。你知道我的代码有什么问题吗 int iter = 0; float nr; for (i = 0; i < vect_local.size(); i++){ iter += 1; nr = vect_local[i]; v

我有两个向量,一个是全局向量,另一个是局部向量。我需要将元素从局部向量复制到全局向量,顺序是1,4,7。。。在本地一个是大小为6的数组。我的代码运行良好,但它总是进行一次以上的迭代,从而导致加载错误的数据。在最后一次迭代中,它还复制了错误的数据。你知道我的代码有什么问题吗

int iter = 0;
float nr;

for (i = 0; i < vect_local.size(); i++){
    iter += 1;
    nr = vect_local[i];
    vect_global.push_back(nr);
    i += 2;

    if((vect_local.size()/iter) == 3){
        iter = 0;
        break;
    }
}
int iter=0;
浮法nr;
对于(i=0;i
编辑:for(i=0;i=vect_local.size();i++)
愚蠢的打字错误。但是我的问题仍然是一样的…

您的循环条件应该是i
int iter = 0;
float nr;

for (i = 0; i < vect_local.size(); i+=3){
//            ^
int iter=0;
浮法nr;
对于(i=0;i
也许是这样的

int main () {

int globalarray[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int localarray[6]={0,0,0,0,0,0};   
int internalcounter=0;

for(int i=0;i<int(sizeof(globalarray)/sizeof(int));i=i+3)
{
 localarray[internalcounter] = globalarray[i];
 internalcounter+=1;
}

for(int i=0;i<6;i++)
{
 cout<<localarray[i]<<endl;
}

return 0;
}
int main(){
int globalarray[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int localarray[6]={0,0,0,0,0};
内部计数器=0;

for(int i=0;我尝试了这个方法,但不起作用。当我打印i befor if子句时,我最后得到的i等于5,这是不正确的。@astrak向量开始计数为零,而不是一:{0,1,2,3,4,5}编辑了我的注释,所以你不需要在for中使用i+=2,这并不是在for循环中推进i的正确编码。正如你所知:)当我将迭代更正为I+=3时,它就工作了!为什么在我的示例中它不工作?@astrak如果((vect_local.size()/iter)==3)这个条件会发生什么{意思?@Vladfrommoskow:当我执行我的代码时,我总是溢出向量。所以我试图用break语句来阻止它。当我根据tomer.z在for cycle中更改迭代时,它是有效的。我不知道这两个代码之间有什么区别…谢谢你的回答。不幸的是,当你有向量时,它会更困难。没有p可以使用“=”将一个向量值赋给另一个向量(如果您重载此运算符,可能会这样)。