对于我的构造函数,我输入一个整数向量,在构造函数中,我设置另一个bool类型的向量,名为theSet。从输入向量中,我检查每个元素以查看它是否在0和20之间,如果为true则则该元素为true。
但是我在解除引用set矢量的实现方面遇到了问题。
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]);
}
}
答案 0 :(得分:1)
使用theSet.resize()
代替theSet.reserve()
,它可能会起作用。请试试。使用reserve()
,您只是为插入预先分配内存,但内存本身是单元化的,分别是。还没有真正的元素。当您尝试修改循环中的值时,您将请求对位置i
处的值的引用,但是没有可以修改的元素,因此错误。