gpt4 book ai didi

c++ - 为什么不能在 2D vector 中 push_back? C++

转载 作者:太空狗 更新时间:2023-10-29 23:49:06 25 4
gpt4 key购买 nike

我正在学习 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;
}

我在运行 push_back 行时遇到的错误是 error: invalid use of void expression current_result.push_back(specific_previous_result.push_back(elem));。感谢您的帮助。

最佳答案

似乎没有正当理由在 push_back 之后返回 vector 本身。有时它很有用,但大多数时候没有用。我建议将它写成两行,这在 IMO 中也比一个单独的(而且效率低下!)函数更清晰:

current_result.push_back(specific_previous_result);
current_result.back().push_back(elem);

关于c++ - 为什么不能在 2D vector 中 push_back? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46673066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com