std::vector<bool> seen(SIZE, false);
时间: 2024-09-25 16:20:15 浏览: 28
利用C++实现从std::string类型到bool型的转换
5星 · 资源好评率100%
在C++中,`std::vector<bool>`有一些特殊性,因为它的元素占用的空间与bool类型不同。当你试图直接初始化并清除所有元素时,可能会遇到错误,如提到的`std::vector<int>::erase(int&)`不匹配的问题。这里有两个可能的问题:
1. **初始化**[^1]:
```cpp
std::vector<bool> seen(SIZE, false); // 这里不能直接这样初始化,因为bool类型占用1位而不是普通int所需的4位空间
```
如果你想初始化所有元素为`false`,应该使用`assign()`方法:
```cpp
std::vector<bool> seen(SIZE);
seen.assign(SIZE, false);
```
2. **清除所有元素**:
当返回`std::vector<bool>`并且没有显式返回值时,编译器可能会警告,因为你实际上是在创建一个新的空向量,而不是修改现有的`seen`向量。正确的做法可能是明确地返回新向量:
```cpp
std::vector<bool> clear_seen(SIZE) {
return std::vector<bool>(SIZE, false);
}
```
阅读全文