ホームページ > バックエンド開発 > C++ > 反復せずに IEnumerable 内の項目数を取得するにはどうすればよいですか?

反復せずに IEnumerable 内の項目数を取得するにはどうすればよいですか?

DDD
リリース: 2024-12-28 08:40:12
オリジナル
493 人が閲覧しました

How to Get the Count of Items in an IEnumerable without Iteration?

IEnumerable からアイテム数を取得反復なし

IEnumerable があるシナリオを考えてみましょう。次のようなコレクション:

private IEnumerable<string> Tables
{
    get
    {
        yield return "Foo";
        yield return "Bar";
    }
}
ログイン後にコピー

このコレクションを反復処理し、進行状況を「#m 中の #n を処理中」として表示したいとします。メインの反復の前に反復せずに m の値を決定する方法はありますか?

IEnumerable について

デフォルトでは、IEnumerable は、アイテム数。遅延評価の性質により、要素は必要な場合にのみ取得されることになります。この設計上の選択は、不必要なメモリ割り当てと処理を回避することでリソースの使用を最適化するために行われます。

代替解決策: ICollection を使用する

アイテム数をすぐに知る必要がある場合は、 IEnumerable の代わりに、ICollection を使用することもできます。 IEnumerable とは異なり、ICollection にはコレクション内の要素の数を返す Count プロパティが用意されています。

public class TableCollection : ICollection<string>
{
    // Implementation details omitted for brevity

    public int Count => 2;
}
ログイン後にコピー

Tables コレクションを ICollection にキャストすることで、または、List のような汎用コレクションを使用すると、Count プロパティにアクセスして、反復を必要とせずに項目数を取得できます。

結論

一方、IEnumerable は、遅延評価の利点はありますが、アイテム数の取得を直接サポートしません。カウントにすぐにアクセスするには、ICollection またはこの機能を提供するより適切なデータ構造の使用を検討してください。

以上が反復せずに IEnumerable 内の項目数を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート