jav*_*o10 2 c++ recursion 2d vector push-back
我正在学习c ++中的递归,并坚持为什么你不能简单地使用.push_back()而不是创建一个函数来复制specific_previous_result元素,然后.push_back().
vector<vector<int>> get_every_n_elements(vector<int> arr, int n) {
if (n == 0) {
vector<vector<int>> result;
vector<int> empty_list;
result.push_back(empty_list);
return result;
}
vector<vector<int>> previous_result = get_every_n_elements(arr, n - 1);
vector<vector<int>> current_result; //empty
for (auto specific_previous_result : previous_result) { // [[]] -> []
for (auto elem : arr) { // [1,2,3,4] -> 1
//current_result.push_back(specific_previous_result.push_back(elem));
//This does not work^^
current_result.push_back(group(specific_previous_result, elem));
//The group function copies all elements to newVec and push_back(elem) after
//Then returns newVec with elem at the end
}
}
return current_result;
}
Run Code Online (Sandbox Code Playgroud)
我运行push_back行时得到的错误是error: invalid use of void expression current_result.push_back(specific_previous_result.push_back(elem));.谢谢您的帮助.
似乎没有一个有效的理由在a之后返回向量本身push_back.有时它很有用,但大部分时间都不是.我建议将它写成两行,这也是一个比单独的(效率低下的!)函数更清晰的IMO:
current_result.push_back(specific_previous_result);
current_result.back().push_back(elem);
Run Code Online (Sandbox Code Playgroud)