【发布时间】:2013-06-21 22:45:51
【问题描述】:
不断收到此错误“向量下标超出范围”。我确定这是因为我的代码的这一部分。谁能帮我看看我做错了什么
bool set::remove(SET_ELEMENT_TYPE removalCandidate)
{
int subscript = positionOf(removalCandidate);
while( (subscript < my_size) && (my_element[subscript] != removalCandidate))
{
subscript++;
}
if(subscript = -1)
{
if(subscript == my_size)
return false;
else {
while (subscript < my_size)
{
my_element[subscript] = my_element[subscript + 1];
subscript++;
}
my_size--;
return true;
}
return false;
}
return 0;
}
【问题讨论】:
-
你用什么称呼它,
my_size是什么? -
在
if (subscript = 1)中应该是==而不是=。另外,当 if 语句仅在subscript为-1时运行时,为什么还要检查subscript是否等于另一个值? -
@0x499602D2 大声笑,不知道我要去哪里。被带走了。所以我根本不需要那个代码?
-
@0x499602D2
set::set() { my_size = 0; my_index = 0; my_capacity = DEFAULT_INITIAL_SET_CAPACITY; my_element.resize(my_capacity); -
另外,如果
subscript可能是-1(或my_element的任何其他无效索引),您应该在尝试做之前检查它作为您在方法中做的第一件事[]运算符与它
标签: c++ vector compiler-errors