Одна вещь, на которую стоит обратить внимание, это копирование векторов, когда вам это не нужно.
Функция подписи
int calcMode(vector<int> numberList)
означает, что numberList
будет скопирован.
int calcMode(const & vector<int> numberList)
позволит избежать копирования. Скотт Майер Эффективный C ++ говорит об этом.
Кроме того, вызов numberList
вводит в заблуждение - это не list
.
Есть пара моментов, о которых стоит знать в цикле for:
for (unsigned int i = 0; i <= numberList.size()-1; i++)
Во-первых, это может вычислять size()
каждый раз. Оптимизатор может избавиться от этого для вас, но некоторые люди напишут
for (unsigned int i = 0, size=numberList.size(); i <= size-1; i++)
size
можно найти один раз таким образом, а не каждый раз.
Они могут даже изменить i++
на ++i
. Здесь привыкли к потенциальным накладным расходам, поскольку постинкремент может включать дополнительное временное значение
Один вопрос - вы * уверены, что это дает правильный ответ?
Сравнение nextNumber == originNumber
смотрит на первое число для начала.
Попробуйте с 1, 2, 2.
Один последний момент. Если это общая цель, что произойдет, если список пуст?