我试图利用一个布尔向量将存储压缩到一个位的事实。以下配方应该是确定 int 数组是否包含重复的好方法(或者是吗?我的整个想法是否存在固有缺陷?)。我不明白为什么我的编译器 XCode 不喜欢
INT_MAX - INT_MIN + 1
下面的代码行。我尝试将表达式转换为 long,但我得到了同样的警告。任何帮助是极大的赞赏!
bool contains_repeats_3(const std::vector<int>& V) {
std::vector<bool> bv (INT_MAX - INT_MIN + 1, 0); // <------ That's the problem line
for (std::vector<int>::const_iterator it = V.begin() ; it != V.end(); ++it) {
if (bv[*it - INT_MIN] == 1) {
return true;
} else {
bv[*it - INT_MIN] == 1;
}
}
return false;
}