C ++矢量初始化为INT_MIN崩溃

时间:2019-01-27 05:11:26

标签: c++

我需要你的一些智慧:

为什么不能这样做:

std::vector<int> min(INT_MIN, 3);

“ C ++异常:内存位置0x0000009AA63CF0A0处的std :: length_error。”

这种方式显然有效:

    std::vector<int> min;
    for (int i = 0; i < 3; ++i)
        large.push_back(INT_MIN);

1 个答案:

答案 0 :(得分:2)

INT_MIN是一个较大的负值。它将转换为无符号的size_t,并变成一个较大的正值-显然大于max_size()

您可能已经打算创建一个包含三个元素的向量,每个元素均等于INT_MIN。在这种情况下,您将以错误的方式指定参数。做吧

std::vector<int> min(3, INT_MIN);