我有一个方法在类LinkRepository
,我检查矢量数组中的重复项Datalinks
,这是类的成员。我遍历数组中的所有元素以检查数组中已存在的新条目Datalink* datalink
。如果是这样,那么不要添加,只需退出循环。C++打破向量循环
void LinkRepository::SaveLink(Datalink* datalink) {
bool Exist = false;
for(vector<Datalink*>::iterator dl = Datalinks.begin(); dl != Datalinks.end(); ++dl)
{
if((strstr((*dl)->ParentID, datalink->ParentID) != NULL) && (strstr((*dl)->ChildID,datalink->ChildID) != NULL))
{
Exist = true;
dl = Datalinks.end();
}
}
if(!Exist)
{
Datalinks.push_back(datalink);
}
};
我的程序似乎崩溃的声明dl = Datalinks.end();
我不知道它为什么崩溃的下一个循环?
如果你不想重复,你确定'std :: vector'是正确的选择吗?还有其他的数据结构可以更有效地防止重复,比如'std :: set'和'std :: unordered_set'。 – fredoverflow 2012-08-06 12:05:35
@FredOverflow你可能有我可以看看哪些是最好的使用来源?我选择'std :: vector'是因为我想要一个动态数组,因为我必须查看'Datalink'对象中'ParentID'和'ChildID'的成员。不用它'std :: set1'或'std :: unordered_set'可以为我做这个吗? – ZioN 2012-08-06 12:29:58