Implicitly convert a vector to a list in C++

Рейтинг: 1Ответов: 0Опубликовано: 25.03.2023
// Было так:
[&server](const std::string &query) {
    return server.MethodFopDocuments(query); // возвращает std::vector<Document>
});

// Нужно так:
[&server](const std::string &query) {
    std::vector<Document> v = server.MethodFopDocuments(query); // возвращает std::vector<Document>
    std::list<Document> l(std::make_move_iterator(v.begin()), std::make_move_iterator(v.end()));
    return l;
});

Нужно чтобы лямбда вместо вектора (как в первом коде) возвращала список (как во втором коде). Но приходится делать много лишних движений - создавать промежуточный вектор v, чтобы получить итераторы на его начало и конец. Можно ли оптимизировать лямбду со списком, чтобы избавиться от промежуточного вектора и возвращать список одной строкой return, как в первом коде?

Ответы

Ответов пока нет.