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