【发布时间】:2017-04-28 23:57:22
【问题描述】:
在它循环到元素 4096 后出现错误。由于某种原因,它停在那里并导致错误。有什么想法吗?
if(myFile.is_open()){
while(getline(myFile, linePerLine) && cacheSizeVector.size() <= userInputCacheSize){
cacheSizeVector.push_back(linePerLine);
if (find(cacheSizeVector.begin(), cacheSizeVector.end(), linePerLine) != cacheSizeVector.end()){
for(int i = 0; i <= userInputCacheSize; i++){
if(cacheSizeVector[i] == linePerLine){ <<<<LINE OF ERROR!
lruCounter[i] = lruCounter[i] + 1;
cout << lruCounter[i] << endl;
cout << cacheSizeVector[i] << " HIT!" << endl;
cout << cacheSizeVector.size() << endl << endl;
}
}
}
else{
std::cout << "Element not found in myvector\n";
}
一些初始化的错误:
"{返回 __is_long() ? __get_long_size() : __get_short_size();}"
【问题讨论】:
-
首先要做的事情:您是否使用调试器在 error 发生的地方中断了行,并调查了局部变量的值?另外:请制造minimal reproducible example。我的预感是:您正在访问
vector越界。 -
您确定
userInputCacheSize不大于您的cacheSizeVector大小吗? -
@KyleKhalaf 是的,这就是问题所在!我将其更改为 cacheSizeVector.size();。现在可以了!
标签: c++ if-statement vector string-comparison