Возврат последовательности элементов известного размера - PullRequest
0 голосов
/ 25 марта 2020

Я пишу функции, возвращающие известное количество элементов , которые я часто добавляю в другую коллекцию:

// declaration:
std::vector<int> computeNumbers();

// usage:
std::vector<int> nums = computeNumbers(); // allocates a vector inside and returns it
allnums.insert(allnums.end(), nums.cbegin(), nums.cend()); // after this, `nums` is not useful anymore

В качестве альтернативы вышеприведенное можно записать в виде:

// declaration:
void computeNumbers(std::vector<int>::iterator outputIterator);

// usage:
computeNumbers(allnums.end());

(при условии, что в обоих случаях allNums достаточно места)

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

Итак, в общем случае :

  • Что Какие плюсы и минусы я не упомянул?
  • Существует ли какое-либо установленное соглашение по этому вопросу?
  • Есть ли другие способы избежать лишних алл c?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...