【发布时间】:2015-01-05 16:38:42
【问题描述】:
对于我的构造函数,我输入了一个整数向量,并在构造函数中设置了另一个 bool 类型的向量,称为 theSet。从输入向量中,我检查每个元素是否在 0 到 20 之间,如果为真则 theSet 的元素为真。
但是,我在实现取消引用 theSet 向量时遇到了问题。
class Set
{
public:
Set(vector<int> &);
bool IsMember(int);
private:
vector<bool> theSet;
}
bool Set::IsMember(int x)
{
if ((x >= 0) && (x <= 20))
return true;
else
return false;
}
Set::Set(vector<int> &v)
{
int length = v.size();
theSet.reserve(length);
bool check;
int p = 0;
for (int i = 0; i < length; i++)
{
theSet[i] = IsMember(v[i]);
}
}
【问题讨论】:
-
你有什么问题?
-
@Radiodef 我刚刚复制/粘贴了他的代码,msvcr 出现了一个调试断言错误,声称
vector<bool> iterator not dereferencable在执行theSet[i] = IsMember(v[i])时。 -
@PuerNoctis 请注意,OP 应该告诉我们这个问题。因为我认为他们已经尝试编译它。
-
一目了然,您可能会被烧毁,因为不幸的是
vector<bool>不是一个充满bool类型的vector,它是一个不能正常工作的专业化。欲了解更多信息,请阅读此gotw.ca/publications/mill09.htm。
标签: c++ vector pass-by-reference dereference