C++ 向量赋值中的问题
我想将窗口推回向量散列1,但在第一次执行后,向量的大小为1,元素值很好,但在第二次执行时,甚至在执行C++ 向量赋值中的问题,c++,vector,C++,Vector,我想将窗口推回向量散列1,但在第一次执行后,向量的大小为1,元素值很好,但在第二次执行时,甚至在执行散列1之前。推回(窗口)此语句大小仍然为1,但元素值被新的窗口值替换,并且在第二次执行hashes1.push_back(窗口)之后向量大小为2,两个元素与上一个相同(窗口中的新值)。有人能帮我吗 vector<char *> hashes1; WS=200, SHIFT=120, FPF=50, windowStart=0; for(int count=FPF ;count &
散列1之前。推回(窗口)
此语句大小仍然为1,但元素值被新的窗口值替换,并且在第二次执行hashes1.push_back(窗口)之后代码>向量大小为2,两个元素与上一个相同(窗口中的新值)。有人能帮我吗
vector<char *> hashes1;
WS=200, SHIFT=120, FPF=50, windowStart=0;
for(int count=FPF ;count && windowStart+WS <length;count--)
{
for(int i=0; i<WS; i++) window[i] = buffer[windowStart+i];
//addBreakPoint(window, FPF-count);
hashes1.push_back(window);
windowStart += SHIFT;
}
向量散列1;
WS=200,SHIFT=120,FPF=50,WindowsStart=0;
对于(int count=FPF;count&&windowStart+WSIts,因为您将对同一地址的引用推送到向量上,然后只更改存储在该地址的值
for(int i=0; i<WS; i++) window[i] = buffer[windowStart+i];
然后这一行将指向该字符的指针推送到向量上。因此,基本上,在循环的每次迭代中,您都将相同的值(指针指向的地址)推送到向量上,并更改存储在该地址的值。我假设窗口
是字符[]
或指向字符[]
的字符*
for(int i=0; i<WS; i++) window[i] = buffer[windowStart+i];
首先向后推window
,它是指向数组第一个元素的指针。然后第二次执行内部循环时,再次设置第一个元素window[0]
,并执行哈希1[0]
仍然指向了这个元素。投了赞成票。感谢你在我的思想中用比我更雄辩的语言表达。