Как я понимаю, если я сравниваю две строки, используя операторы вроде менее чем (<) С ++ будет сравнивать их лексикографически. Я хотел бы воспользоваться этим поиском по массиву и вернуть наименьшее лексикографическое значение. И для чего я использую временное значение для поиска наименьшего string smallest
,
Как вы видите, я дал ему значение z
, Какая буква / символ имеет наибольшее лексикографическое значение? есть ли статическая переменная, которая уже определена, я могу назначить ее в C ++? Какая норма при этом?
string VectorPQueue::extractMin() {
string smallest = "z";
int *count = new int;
if (elems.size() != 0) {
for (int i = 0; i < elems.size(); i++)
{
if ((elems.get(i)) < smallest) {
smallest = elems.get(i);
*count = i;
}
}
} else {
ErrorException("ERROR: pqueue is empty.");
return "";
}
elems.remove(*count);
printElements();
return smallest;
}
Вы можете использовать std::min_element
алгоритм, который будет использовать обычный оператор меньше, чтобы извлечь итератор для наименьшего элемента в диапазоне. Это полностью исключает необходимость написания этой функции самостоятельно.
Надеюсь это поможет!
Просто установите smallest
к первой строке, затем начните поиск на второй.