这是一个求vector int所有组合的函数.
void generateCombinations(const vector<int>& nums, vector<int>& current, int index, vector<vector<int>>& result)
核心的函数是这个. 我的问题是, 如果把这个参数result引用删掉, 换成Solution的成员变量访问, 就是本来generateCombinations准备存储答案的时候, 会放到传进来的 result引用里面. 我现在把这个result入参删除, 换成Solution的成员变量来访问.
程序的执行速度会慢不少. 我请问这个原因是什么?
#include <iostream>
#include <vector>
using namespace std;
// 递归函数,生成所有组合
void generateCombinations(const vector<int>& nums, vector<int>& current, int index, vector<vector<int>>& result) {
// 将当前组合加入结果集
result.push_back(current);
// 从当前索引开始,遍历所有可能的数字
for (int i = index; i < nums.size(); ++i) {
// 将当前数字加入组合
current.push_back(nums[i]);
// 递归调用,处理下一个数字
generateCombinations(nums, current, i + 1, result);
// 回溯:移除当前数字,尝试其他组合
current.pop_back();
}
}
// 包装函数,返回所有组合
vector<vector<int>> getAllCombinations(const vector<int>& nums) {
vector<vector<int>> result;
vector<int> current;
generateCombinations(nums, current, 0, result);
return result;
}
// 测试代码
int main() {
vector<int> nums = {1, 2, 3};
// 获取所有组合
vector<vector<int>> combinations = getAllCombinations(nums);
// 输出结果
for (const auto& combo : combinations) {
for (int num : combo) {
cout << num << " ";
}
cout << endl;
}
return 0;
}