vector <bool> arr重置问题

时间:2017-06-25 08:46:06

标签: c++ vector stl boolean

例如,

vector<bool> arr(10);
arr[0]=true;

然后,我想重置矢量。 所以,

arr.clear();

我希望所有元素的向量为零,因为False为零。

printf("%d", arr[0]);

但是,结果数量&gt; 0;

即使清除前的值与清除后的值相同!

发生了什么事?

   // Test Code
    vector<bool> arr(101);
    arr[1] = true;
    printf("Before Value : %d\n", arr[1]);
    arr.clear();
    printf("Result : %d\n", arr[1]);

    // Test Code




vector<bool> arr(101);
printf("asdf : %d\n", arr.size());

// Test Code
arr[1] = true;
printf("Before Value and size : %d, %d\n", arr[1], arr.size());
arr.clear();
printf("Result and size : %d, %d\n", arr[1], arr.size());

// Test Code

1 个答案:

答案 0 :(得分:2)

调用clear()后,向量的大小变为0,因此使用下标运算符arr[0]访问任何元素会导致未定义的行为。如果您尝试使用at()方法访问第一个项目,那么行为将被明确定义,并且会抛出::std::out_of_range异常。