Я написал код следующим образом:
#include <iostream>
#include <vector>
using type = std::vector<std::string>;
int main()
{
int query = 5;
std::vector< type > answer;
answer.reserve(query);
auto vecReturn = [](const std::string& x, const std::string& y) -> decltype(auto)
{
std::vector<std::string> tempVec = {x, y};
return tempVec; // removed std::move() from here
};
while(query--)
{
std::string xName, yName;
std::cin >> xName >> yName;
answer.emplace_back( vecReturn(xName, yName) );
}
return 0;
}
Я могу переписать вышеупомянутое без лямбда-функции, что-то вроде следующего:
using type = std::vector<std::string>;
int query = 5;
std::vector< type > answer; // group set
answer.reserve(query);
while(query--)
{
std::string xName, yName;
std::cin >> xName >> yName;
type tempVec = { xName, yName };
answer.emplace_back( tempVec );
}
Который выглядит намного меньше кода, чем первыйодин.Теперь возникает вопрос:
- Есть ли разница эффективности между этими двумя способами, учитывая, что
query
может достигать максимального целочисленного числового предела. - Если да, то каким из вышеперечисленных способов вы бы мне посоветовали?
Спасибо за ваше время.