Planters我有一个包含 s 向量的类向量Plant。我的目标是返回一个植物向量,其中包含来自 Planter 1 的植物,然后是来自 Planter 2 的植物,依此类推。\n示例:planter{{1,2,3,4}, {2,3,4,5}}应该导致{1,2,3,4,2,3,4,5}. 请注意,数字代表植物对象。我试图用join_view它来压平它,但我收到了错误
error: class template argument deduction failed:\n 18 | plants = std::ranges::join_view(planterView);\n | ^\n/home/parallels/CMPT373/se-basic-cpp-template/lib/solutions/task05.cpp:18:52: error: no matching function for call to \xe2\x80\x98join_view(std::ranges::ref_view<std::vector<ex4::Planter> >&)\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n我已经尝试过以下操作:
\nfor (auto it : planters){\n plants.insert(plants.end(), it.getPlants().begin(), it.getPlants().end());\n}\nRun Code Online (Sandbox Code Playgroud)\n这是可行的,但是我只允许使用一个循环(不包括 STL 函数调用内的循环)并且只能分配内存一次。上述方法多次分配内存。我该如何处理这个问题?
\n我的代码:
\nstd::vector<Plant> task05(std::vector<Planter> planters){\n std::vector<Plant> plants;\n auto planterView = std::views::all(planters);\n std::views::transform(planterView, [](Planter planter){ return planter.getPlants();});\n plants = ranges::views::all(std::ranges::join_view(planterView));\n return plants;\n}\n …Run Code Online (Sandbox Code Playgroud)