重複を消去してベクトルを並べ替える最も効率的な方法
重複を効率的に消去して C ベクトルを並べ替えるには、並べ替えと次に std::unique 関数を使用します。ただし、指定したコードには潜在的な欠陥があります。独自の関数が要素の順序を変更するため、並べ替え順序が崩れる可能性があります。
さらに、操作の順序はパフォーマンスに影響を与える可能性があります。ベクターに多くの重複が含まれている場合は、(一意を使用して) 最初に重複を削除する方が効率的である可能性があります。ただし、重複が均等に分散されている場合は、最初にソートする方が速い可能性があります。
より効率的な代替方法は、set コンストラクターを使用してベクトルを std::set に変換することです:
set<int> s(vec.begin(), vec.end()); vec.assign(s.begin(), s.end());
このアプローチでは、セットの自然な特性を利用するため、一意性と正しい並べ替えが保証されます。提供されたベンチマークが示すように、重複の数が十分に大きい場合、セットに変換して元に戻す方が、ベクトルを直接操作するよりも高速です。
最後に、手動でセットに変換することは注目に値します (例: set<) ;int> s; for (unsigned i = 0; i
以上が重複を削除して C ベクトルを並べ替える最も効率的な方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。