Cuestión : Ayudarme a optimizar este código.

¿Cómo paro la iteración cuando se encuentra una mayor distancia?  No quiero iterar con el vector entero en el 2do lazo (mientras que lazo). class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
notpretty del >#include " del class= " de " codeSnippet840178 del id= del
 del #include
 del #include
 del #include
 del #include
 del #include
 del #include

usar namespace std;

struct StudentAttempt
{
   distancia de la internacional;
   studentName de la secuencia;
};

bool cmpEntry (StudentAttempt dejado, la derecha de StudentAttempt) {
   == de vuelta right.studentName del && left.studentName del == right.distance de left.distance;
}
cmpAttempts del bool (StudentAttempt dejado, la derecha de StudentAttempt) {
   si (left.distance < right.distance) {
      de vuelta verdad;
   }
   si (== right.distance de left.distance) {
      si (left.studentName < right.studentName) {
         de vuelta verdad;
      }
      
         falso de vuelta;
   }
   
      falso de vuelta;
}

bool isDistEqual (StudentAttempt dejado, la derecha de StudentAttempt) {
   volver (== right.distance de left.distance
      ¡&& left.studentName! = right.studentName);
}

size_t printAllEqual (vector& v, StudentAttempt& sa, stringstream& ss del const del const) {

   vector:: const_iterator i = v.begin ();
  size_t SZ = 0;
  el bFirst del bool = verdad;

  ¡mientras que (i! = v.end ()) {

    si (isDistEqual (*i, sa)) {
    
      ¡si (! bFirst) ss << “,”;
      ss << i->studentName;
      ++sz;
    }

    ++i; 
    bFirst = falso;
  }

  SZ de vuelta;
}
 

cañería de la internacional () {

   throwDist de StudentAttempt [] = {
      {50, “A”}, {22, “A”}, {16, “B”}, {44, “C”},
      {33, “D”}, {34, “E”}, {22, “F”}, {21, “G”},
      {49, “A”}, {5, “B”}, {2, “C”}, {22, “A”},
      {33, “B”}, {22, “C”}, {22, “D”}, {44, “E”}, {22, “D”}
   };


   set manejado;

   internacional len = sizeof ()/sizeof (throwDist [0] del throwDist);

   dist del vector (el throwDist, throwDist + len);
   vector:: iterator él = dist.begin ();

   clase (dist.begin (), dist.end (), cmpAttempts);

   único (dist.begin (), dist.end (), cmpEntry); // quita los duplicados idénticos del vector clasificado


   para (; ¡él! = dist.end (); it++) {

      stringstream ss;

      pair:: iterator, bool> p = handled.insert (it->distance);

      ¡si (! p.second) continúan; // dirigido ya

      si (0 < printAllEqual (dist, *it, ss)) 
        cout << setw (2) << (*it) .distance 
           << “pies:  ” << (*it) .studentName << ss.str () << endl;
   }
}
class= del

Respuesta : Ayudarme a optimizar este código.

Como en su otro Q, usted podría hacer alguno que optimizaba parando la iteración cuando usted encuentra una distancia que sea más grande que la nosotros está comprobando para (puesto que ninguna igual seguirá de entonces), e.g.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
size_t printAllEqual (vector& v, StudentAttempt& sa, stringstream& ss del const del const) {

  vector:: const_iterator i = v.begin ();
  size_t SZ = 0;
  el bFirst del bool = verdad;

  ¡mientras que (i! = v.end ()) {

    si (isDistEqual (*i, sa)) {
    
      ¡si (! studentName de los ss del bFirst <>);
      ++sz;

      // que podemos parar aquí al encontrar distancias
      // más grande que el somos puesto que es el vector
      // clasificó en orden creciente (si no, éste causaría errores)
      Distancias más altas de // nunca igualarán los nuestros
      si (i->distance > sa.distance) rotura;
    }

    ++i; 
    bFirst = falso;
  }

  SZ de vuelta;
}
Otras soluciones  
 
programming4us programming4us