返回信息流class Solution
{
public:
vector<vector<int>> threeSum(vector<int> &nums)
{
vector<vector<int>> result;
if (nums.size() < 3)
return result;
if (nums.size() == 3)
{
if (nums[0] + nums[1] + nums[2] == 0)
result.push_back(nums);
return result;
}
unordered_set<int> hashset;
for (int i = 0; i < nums.size() - 2; ++i)
{
if (hashset.insert(nums[i]).second)
{
vector<vector<int>> temp;
temp=twoSum(nums.begin() + i + 1, nums.end(), -nums[i]);
if (!temp.empty())
for (int i = 0; i < temp.size(); ++i)
result.push_back(temp[i].insert(temp[i].begin(), sums[i]));
}
}
return result;
}
vector<vector<int>> twoSum(vector<int>::iterator &t1, vector<int>::iterator &t2, int num)
{
unordered_set<int> hashset;
vector<vector<int>> result;
for (auto it = t1; it != t2; ++it)
{
if (hashset.find(*it) != hashset.end())
{
if (hashset.find(num - (*it)) != hashset.end())
{
vector<int> temp
temp.push_back(*it);
temp.push_back(num - (*it));
result.push_back(temp);
}
}
else
hashset.insert(*it);
}
return result;
}
};
编译报错:
**Error:
Line 21: invalid initialization of non-const reference of type 'std::vector<int>::iterator& {aka __gnu_cxx::__normal_iterator<int*, std::vector<int> >&}' from an rvalue of type '__gnu_cxx::__normal_iterator<int*, std::vector<int> >'**
深夜求助,带上我的女神^_^
https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1512325580252&di=140a70e52d7667349603e5038c900f96&imgtype=0&src=http%3A%2F%2Fp6.qhmsg.com%2Ft0113abf7d7990921b0.png
这是一条镜像帖。来源:北邮人论坛 / cpp / #96960同步于 2017/12/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【求助】一个调试时的错误,看不懂,有福利
unimit
2017/12/3镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
太感谢了。[ema11]
【 在 chenxiansf 的大作中提到: 】
: 调用twoSum时,nums.begin()+i+1是临时生成的量,右值,不能生成引用t1
问题在于你把非const的左值引用绑定到右值上。其实你这种写法如果用msvc是可以编译通过的(非w4警告级别),因为M$没有完全按照c++标准,自己进行了拓展。
多谢,好像新标准对右值左值重新定义,有什么移动语义完美转发,C++这套东西真的复杂。
【 在 wjy1230 的大作中提到: 】
问题在于你把非const的左值引用绑定到右值上。其实你这种写法如果用msvc是可以编译通过的(非w4警告级别),因为M$没有完全按照c++标准,自己进行了拓展。