2017-06-20 73 views
0

基本标题。我有一个班有多个重复,我需要摆脱他们在我的组合框,但我不知道如何。这是我的代码:需要清除C++中的组合框中的重复项

for (int i = 0; i < maxInventaire; i++) { 
     if (item[i] != NULL) { 
      cmb_item->Items->Add(gcnew String(item[i]->getNom().c_str())); 
     } 
    } 

    for (int i = 0; i < maxEmployes; i++) { 
     if (employe[i] != NULL) { 
      cmb_employe->Items->Add(gcnew String(employe[i]->getNom().c_str())); 
     } 
    } 

我有超过20个重复的第一个。这是我正在使用的项目列表(例如:桌面,笔记本电脑等),我已经将它们中的每一个存储在具有不同ID的类中,但是它们的名称与桌面中的名称保持一致。

必须有一种方法来删除那些重复。我到处搜寻没有运气,我想你们在这里可以帮助我。

谢谢!

+0

本机C++没有组合框,字符串或gcnew。请用正确的语言或技术标记您的问题。 –

+0

我正在使用Windows窗体 – Will

+0

它在我看来你使用的不仅仅是Windows窗体。也许,微软C++扩展和CLR。了解托管C++和本机C++之间的区别对您来说很重要。他们是完全不同的语言。 –

回答

1

最简单的方法可能是将名称复制到std :: set中,然后将它们从集合中复制到组合框中。

std::set<std::string> names; 
for (int i = 0; i < maxInventaire; i++) { 
    if (item[i] != NULL) { 
     names.insert(item[i]->getNom()) 
    } 
} 
for (const auto& name: names) { 
    cmb_item->Items->Add(gcnew String(name.c_str())); 
} 

您还可以使用std::unordered_set,但真的当你有一个组合框大大太多的条目,且按字母顺序排列的条目可能比一些随机的顺序更容易的性能差异只成为显著(其是什么unordered_set将给予)。

+0

完全固定它。非常感谢! – Will