2011-03-31 27 views

回答

2

让我假设类型的IDint(因为你没有指定的话)。

bool found = false; 
for (int i = 0; i < list->count(); ++i) { 
    if (list->item(i)->data(Qt::DisplayRole).toInt() == ID_to_match) { 
     found = true; 
     break; 
    } 
} 

if (!found) { 
    do_something_here(); 
} 
+0

我喜欢避免循环... – user63898 2011-03-31 08:12:44

+1

我没有其他的办法可以想到。这是一种搜索:按“数据”字段搜索。一般情况下,你不能完成比'O(n)'更快的搜索(不考虑关于二分搜索的问题等)什么需要循环。如果你不操作数十亿项目,这应该足够快。特别是如果'ID'的类型足够简单,可以比较,比如'int'。如果你想要,你可以创建一个名为'search_by_data'的独立函数,并将代码放在这里。 – maverik 2011-03-31 08:17:34

相关问题