如何在不进行C ++排序的情况下找到给定向量中的第一,第二和第三最高值?

时间:2018-10-19 00:13:04

标签: c++

这就是我为代码所做的

int maxIndex = 0; int secPlace = 0; int minIndex = 0; 
for(int k = 0; k < w.size(); k++){  //Finding First Place
    if(w.at(k) > w.at(maxIndex)) {                                       
       maxIndex = k;                                                   
      }
}
 for(int a = 0; a < w.size(); a++){ //Finding Second Place
    if( a!= maxIndex && w.at(secPlace) < w.at(a)){
       secPlace = a; 
    }
 }

for(int b = 0; b < w.size(); b++){   //Finding third place
    if(b != maxIndex && b != secPlace && w.at(minIndex) < w.at(b)){

       minIndex = b;
 }

我知道,如果我让用户输入诸如10、8、6之类的值,则此代码将不起作用,因为用于查找第二位和第三位的循环永远不会实现。我不知道从哪里可以解决这个问题。

1 个答案:

答案 0 :(得分:0)

您可以将最高值存储在NaN中,将较高的值插入该vector并将其限制为大小3:

vector