【问题标题】:error Line 923: Char 34: runtime error: reference binding to null pointer of type 'value_type' (stl_vector.h)错误第 923 行:字符 34:运行时错误:引用绑定到类型为“value_type”的空指针 (stl_vector.h)
【发布时间】:2019-11-17 00:54:48
【问题描述】:

这是我的代码。在 leetcode 上运行时出现运行时错误,请帮帮我。

我已经尝试了所有已经回答的类似类型的问题,但我的代码不起作用。将 unsigned 转换为 int 并确保向量不为空。

class Solution {
public:
    vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {
        vector<int> seats(0,n);
        int a = bookings.size();
        for(int i=0;i<a;i++){
            int c=bookings[i][0], d=bookings[i][1];
            for(int j=c;j<=d;j++){
                seats[j-1]=bookings[i][2]+seats[j-1];
            }
        }
        return seats;
    }
};

第 923 行:字符 34:运行时错误:引用绑定到类型为“value_type”的空指针 (stl_vector.h) 我收到此错误

【问题讨论】:

  • 我建议添加一些asserts 来验证您的假设。
  • 还考虑在两个或多个直角括号之间添加一个空格,例如:vector&lt; vector&lt;int&gt; &gt;&amp; bookings。否则一些编译器会抱怨。

标签: c++


【解决方案1】:

我遇到了类似的问题 我只是添加了,如果向量的大小为零,则返回“”; 例如-

enter code here
int a = bookings.size();
if(a==0)
{
return "";
}

【讨论】:

    【解决方案2】:

    vector& bookings 的大小可能为零(或 null)。 所以在代码开头添加以下条件:

    if(bookings.size()==0)
    {
      ...
    }
    

    然后是左边的代码。

    【讨论】:

    • 这不是必须的,如果bookings向量的大小为0,则循环不会运行。但是,在这种情况下,OP需要考虑返回seats是否有效。
    【解决方案3】:

    vector&lt;int&gt; seats(0,n); 创建一个大小为零的向量(一个空向量),所有元素都初始化为值n(这是没有实际意义的,因为没有元素)。然后seats[j-1] 表现出未定义的行为,对于j 的任何值,通过访问越界索引。

    您可能打算以相反的顺序传递参数,如 vector&lt;int&gt; seats(n, 0); 这将创建一个由 n 元素组成的向量,初始化为零。

    【讨论】:

      猜你喜欢
      • 2022-06-03
      • 1970-01-01
      • 2020-01-03
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 2019-11-10
      相关资源
      最近更新 更多