我显然有一个“超出范围”的向量,并且需要帮助来捕获错误。我想使用向量中的每个元素遍历find函数,在另一个向量中进行检查。

for(int i=1201; i <= memoryQueue.size(); i++){
    //cacheLookUp = find(cacheQueue.begin(), cacheQueue.end(),memoryQueue.at(i));

    //while(cacheLookUp != cacheQueue.end()){
        if(find(cacheQueue.begin(), cacheQueue.end(), memoryQueue.at(i)) != cacheQueue.end()){ // <<-- Problem here
            cacheHit++;
        }
        else{
            cacheMiss++;
        }
    //}

    cout << "Element in memeory: " << i << endl;
}

最佳答案

您使用以下for循环:

for(int i=1201; i <= memoryQueue.size(); i++)


当您尝试在上一次迭代中访问memoryQueue

i = memoryQueue.size()


使用memoryQueue.at(i)只是超出范围(记住位置从0开始)

即使我不确定您要达到的目标,

for(int i=1201; i < memoryQueue.size(); i++)


应该解决超出范围的问题

10-08 11:24