对于循环溢出矢量大小

时间:2014-09-07 20:17:26

标签: 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];
    vect_global.push_back(nr);
    i += 2;

    if((vect_local.size()/iter) == 3){
        iter = 0;
        break;
    }
}

编辑:for(i = 0; i&lt; = vect_local.size(); i ++) 愚蠢的错字。但我的问题仍然是一样的......

2 个答案:

答案 0 :(得分:1)

你的循环条件应该是i&lt; vect_local.size()因为最后一个索引是size-1

int iter = 0;
float nr;

for (i = 0; i < vect_local.size(); i+=3){
//            ^

答案 1 :(得分: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};   
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;
}

打印: 1 4 7 10 13 16

相关问题