【发布时间】:2013-09-04 09:45:23
【问题描述】:
RemoveContact_HI 创建了这个函数来删除向量中的元素:
void JNP::IPComm_HostType::RemoveContact_H( UINT contactIndex,std::vector<IPContact>& l )
{
assert( contactIndex < l.size() );
l.erase( l.begin() + contactIndex );
}
但它似乎不起作用。当我调用该函数时,该元素不会被删除。向量的大小减1,但你仍然可以通过编码访问包括删除元素在内的所有元素
hostList[some integer]
即如果 hostList 有 2 个元素并且我要调用
RemoveContact_H( 0, hostList )
大小将减小到 1,但两个元素仍会退出并可以访问!
编辑
不出所料,错误是由于我的编码而不是 vector::erase() 函数。我之前为 IPContact 类定义了 equals 运算符,它实际上并没有复制任何数据。
【问题讨论】: