**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
3天前关闭。
Improve this question
我在leetcode上尝试两个加两个列表。我的c++代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution
{
public:
void insert_head(ListNode *&root, int data)
{
ListNode *temp = new ListNode(data);
temp->next = root;
root = temp;
}
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2)
{
int i = 0, n1 = 0, n2 = 0, sum, ff;
vector<int> a;
vector<int> b;
vector<int> c;
while (l1 != NULL && l2 != NULL)
{
a.push_back(l1->val);
b.push_back(l2->val);
l1 = l1->next;
l2 = l2->next;
}
// a={2,4,3}
// b={5,6,4}
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
// a={3,4,2}
// b={4,6,5}
while (i < a.size())
{
n1 = n1 * 10 + a[i];
n2 = n2 * 10 + b[i];
++i;
}
sum = n1 + n2;
// sum=807
while (sum > 0)
{
c.push_back(sum % 10);
sum = sum / 10;
}
// c={7,0,8}
reverse(c.begin(), c.end());
// in leet code cannot provide c[0]
i = 0;
ListNode *k = new ListNode(c.at(i));
i++;
while (i < c.size())
{
insert_head(k, c.at(i));
++i;
}
return k;
}
};
但在抛出“std::out_of_range”what()的示例后,它将返回此错误终止调用:vector::_M_range_check:__n(0)〉= this-〉size()(0)
1条答案
按热度按时间drnojrws1#
std::out_of_range表示你正在访问vector中不存在的值。在这种情况下,它是你试图访问的第一个值c[0],但失败了。这意味着vector c是空的。
如果你能提供一个具体的例子,说明类在抛出时是如何使用的,那么我们也许能告诉你为什么。