Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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++ 向量赋值中的问题_C++_Vector - Fatal编程技术网

C++ 向量赋值中的问题

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,元素值很好,但在第二次执行时,甚至在执行
散列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]
仍然指向了这个元素。

投了赞成票。感谢你在我的思想中用比我更雄辩的语言表达。