Я полностью понимаю, что этот вопрос был задан много , но я прошу конкретный вариант, и мой search-foo сдался, так как я нашел только алгоритмы, которые добавляют один существующий вектор другому, но не одному, возвращенному из функции.
У меня есть эта функция, которая перечисляет все файлы в каталоге:
vector<string> scanDir( const string& dir )
, который может вызывать себя внутри (для подкаталогов).
Мне нужен короткий способ добавления возвращаемого значения к вектору вызывающей стороны. Я имею в виду что-то вроде этого (но, конечно, это не существует :():
vector<string> fileList;
//...
fileList.append( scanDir(subdirname) );
Боюсь, что сохранение возвращаемого значения и его вставка в fileList приведет к снижению производительности. Я имею в виду следующее:
vector<string> temp( scanDir(subdirname) );
copy( temp.begin(), temp.end(), back_inserter(fileList) );
Спасибо!
PS: Я не заставляю себя использовать vector, любой другой контейнер, который одинаково хорошо работает и может предотвратить потенциальную операцию большого копирования, - это нормально для меня.