Объявление функции Variadic VS функция, принимающая список

Каким образом, как показано ниже, при разработке класса или функции лучше и почему?

class Container {

//Provide this functionality??
void addItemVariadic(const Value& val, ...);

//Or provide this functionality??
void addItemList(const list<Value>& vals);

};

Лучше предоставить такую ​​функцию, как addItemVariadic (..) или addItemList (..)?

Или лучше предоставить набор таких функций, например, продолжить использование некоторых итераторов, или лучше ограничить функциональность, например, просто взять список?

2

Решение

Использование переменных функций опасно

Если вы когда-нибудь передадите переменную, которая не имеет тип appriopriate, она вылетит во время выполнения при вызове функции.

Наоборот, если вы используете std::list, он не будет компилироваться просто, и вы избежите сбоя.

Кстати: я советую вам использовать std::vector вместо std::list в этом случае.

Edit1 Возможный дублирующий вопрос. с хорошее решение с использованием оператора << для ввода всех параметров в одном кадре.

Edit2 Чтобы выбирать между различными std :: Containers, есть выбор-граф в качестве ответа на этот вопрос. Этот график адресован на C ++ 03, он не охватывает новые контейнеры, представленные в C ++ 1.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]