Я новичок в C ++, поэтому, когда учусь, я стараюсь использовать множество Java-измов. В любом случае, в Java, если бы у меня был класс с методом поиска, который возвращал бы объект T
из a, Collection< T >
который соответствует определенному параметру, я бы вернул этот объект, а если бы объект не был найден в коллекции, я бы вернулся null
. Тогда в своей вызывающей функции я бы просто проверилif(tResult != null) { ... }
В C ++ я обнаружил, что не могу вернуть null
значение, если объект не существует. Я просто хочу вернуть «индикатор» типа T, который уведомляет вызывающую функцию о том, что объект не найден. Я не хочу создавать исключение, потому что это не исключительные обстоятельства.
Вот как сейчас выглядит мой код:
class Node {
Attr& getAttribute(const string& attribute_name) const {
//search collection
//if found at i
return attributes[i];
//if not found
return NULL; // what should this be?
}
private:
vector<Attr> attributes;
}
Как я могу его изменить, чтобы поставить такой маркер?
std::find(first, last, value)
возвращается,last
если ни один элемент не соответствует.