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:
#include #include #include #include using namespace std; struct StudentAttempt { расстояние int; studentName шнура; }; cmpAttempts bool (StudentAttempt ое, право StudentAttempt) { если (left.distance < right.distance) {, то возвращенно true; } еще если (== right.distance left.distance) {, то если (left.studentName < right.studentName) {, то возвращенно true; } еще возвращенное ложное; } еще возвращенное ложное; } bool isDistEqual (StudentAttempt ое, право StudentAttempt) { возвратите (== right.distance left.distance && left.studentName! = right.studentName); } основа int () { throwDist 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»}, }; int len = sizeof) (throwDist/sizeof (throwDist [0]); dist vector (throwDist, throwDist + len); vector:: iterator оно = dist.begin (); вид (dist.begin (), dist.end (), cmpAttempts); для (; оно! = dist.end (); it++) { cout << setw (2) << (*it) .distance << «ноги: » << (*it) .studentName << endl; } оно = adjacent_find (dist.begin (), dist.end (), isDistEqual); }
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:
#include #include #include #include #include #include #include using namespace std; struct StudentAttempt { расстояние int; studentName шнура; }; cmpDist bool (StudentAttempt ое, право StudentAttempt) { если (== right.distance left.distance) {, то возвращенно true; } возвратите ложное; } cmpAttempts bool (StudentAttempt ое, право StudentAttempt) { если (left.distance < right="">& v, StudentAttempt& sa const, stringstream& ss) {, то вектор:: const_iterator iий = v.begin (); size_t sz = 0; пока (I! = v.end ()) { если (isDistEqual, то (*i, sa)) { studentName <>ss; ++sz; } ++i; } возвращенный sz; } основа int () { throwDist 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»}, }; комплект отрегулировал; int len = sizeof) (throwDist/sizeof (throwDist [0]); dist вектора (throwDist, throwDist + len); вектор:: iterator оно = dist.begin (); вид (dist.begin (), dist.end (), cmpAttempts); //unique (dist.begin (), dist.end (), cmpDist); для (; оно! = dist.end (); it++) { stringstream ss; пары:: iterator, bool> p = handled.insert (it->distance); если (! p.second) продолжаются; // уже отрегулировало если (0 < printAllEqual="">