2017-06-20 2 views
0

基本的にタイトル。私は複数の重複を持つクラスがあり、私はコンボボックスでそれらを取り除く必要があるが、私はどのように考えていない。ここに私のコードはあります:コンボボックスでDuplicatesをクリアする必要があります。

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フォームよりもはるかに多くを使用しています。おそらく、Microsoft C++ Extensionsと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

関連する問題