テンプレート/ジェネリックにデータ型が必要ない場合はどうなりますか

PRP

からのジェネリックデータ型STLまたは独自に実装されたジェネリッククラスを使用する場合、データ型を指定しないオプションがありますか... ???

例:

グラフライブラリを作成している場合....そのライブラリを使用している人は、ノードにデータを保存したい場合があり、ノード間の接続にのみ関心がある場合があります。

したがって、ジェネリックライブラリを提供するために、いくつかのデータ変数を配置します。

template <class T>
class Graph
{
    T data[number_of_nodes]; // This somehow corresponds to data stored in each node
    Edge e[number_of_edges];
}

いいえ、データ変数がまったく必要ない場合はどうすればよいですか...?

ザスカール

プレーン配列をクラスでラップさせた場合、voidを明示的に特殊化して、追加のバイトを1バイトだけ支払うことができます。

template<int N, class T>
class array {
    T v[N];
    const T &operator[](int i) const { return v[i]; }
    T &operator[](int i) { return v[i]; }
};

template<int N>
class array<N,void> {
    const void operator[](int &i) const {  }
    void operator[](int &i) { }
};

int main()
    cout<<sizeof(array<100,int>)<<endl;
    cout<<sizeof(array<100,void>)<<endl;
}

代わりにGraphクラスを特殊化することもできますが、配列ラッパーのみを特殊化する方が作業が少ないと思います。

とにかく、最良のアイデアは、ノードをグラフのジェネリック型にし、追加データなしで基本ノード実装を提供し、「500-内部サーバーエラー」で提案されているように、ユーザーが独自の派生ノード型を定義できるようにすることです。グラフ内のノードについて他に何も保存する必要はありません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

異なるエンティティの動作がかなり異なる場合、ジェネリックリポジトリパターンをどのように管理する必要がありますか?

分類Dev

サイトコアでカスタムコンテンツエディター([エディター]タブ)を作成する場合、別のVSプロジェクトでaspxページが必要な場合のURLの形式はどうなりますか

分類Dev

単体テストでは、アプリケーションサーバーで実行していない場合にデータソースをどのようにセットアップする必要がありますか?

分類Dev

ジェネリック型が異なる場合にインターフェースを使用することは理にかなっていますか

分類Dev

ネットワーク(プログレッシブウェブアプリ)で利用可能な更新がある場合、キャッシュは更新されるかどうかになります。はいの場合、どのように?

分類Dev

Kotlin:ジェネリック型を返す関数。どの具体的なタイプを返す必要があるかわからない場合はどうなりますか?

分類Dev

C ++でテンプレートなしのジェネリック型を返すにはどうすればよいですか?

分類Dev

ReactNativeのReactNavigationライブラリによって提供されるスタックナビゲーターコンポーネントのinitialRouteNameプロパティが存在しない場合はどうなりますか

分類Dev

Typescript:ジェネリック型が設定されている場合はオプションのpropが必要になります

分類Dev

テンプレートエイリアス宣言が新しいタイプのファミリに解決される場合はどうなりますか?

分類Dev

同じユーティリティスクリプトが異なるSCMディレクトリにチェックインされていても、どこでも同じである必要がある場合、それらが同じであることを確認するにはどうすればよいですか?

分類Dev

エンティティにインデックス付けされていないデータが以前にある場合、インデックス作成はGoogleアプリデータストアでどのように機能しますか?

分類Dev

なぜテンプレート/ジェネリックが必要なのですか?継承は十分ではありませんか?

分類Dev

関数内で参照を作成する場合、ジェネリック型をライフタイムパラメーターを必要とするトレイトにバインドするにはどうすればよいですか?

分類Dev

XCTest:テストターゲットに変更を加えるだけの場合、Xcodeがプロジェクトを不必要に再コンパイルしないようにするにはどうすればよいですか?

分類Dev

CloudFormationテンプレートを更新するときに、「互換性のない起動テンプレート:ネットワークインターフェイスのデバイスインデックスはゼロでなければなりません」を解決するにはどうすればよいですか?

分類Dev

laravel eloquent:データがない場合、Eloquentリレーションはnullオブジェクトを返す代わりに何かを返す必要があります

分類Dev

初めて開いたアプリをチェックする必要がありますかどうかはいの場合は直接メインアクティビティに移動し、そうでない場合は紹介画面に移動します

分類Dev

C ++:一度使用した後にテンプレートのジェネリックデータ型を再宣言するのはなぜですか?

分類Dev

チェックポイントされたデータをコミットできない場合、正確にはどうなりますか?

分類Dev

JavaにはC ++テンプレートのようなジェネリックの控除がありますか?

分類Dev

必要なすべてのデータがテキストとしてフォーマットされていない場合、レビューをスクレイピングするにはどうすればよいですか?

分類Dev

マップは常に参照型ですが、非ポインターレシーバーから返された場合はどうなりますか?

分類Dev

リアルタイムデータベースからActionViewリンクを取得するButtonのIfメソッドを使用するにはどうすればよいですか?リンクがない場合はトーストメッセージを表示しますリンクはありません

分類Dev

コンストラクターの障害が発生した場合、どのようなクリーンアップを行う必要がありますか?

分類Dev

構成環境をデプロイするときに、dockerデーモンが割り当てるネットワークIPアドレスを使い果たした場合はどうなりますか?

分類Dev

JavaScript、ジェネレーター-終了条件が設定されていない場合、「yield」はどのようにループから抜け出しますか?

分類Dev

データが変更されない場合、Reactコンポーネントで状態を使用することは悪い習慣ですか?代わりに、クラスのプロパティを使用する必要がありますか?

分類Dev

MySQL / PHPは、データがデータベーステーブルにあるかどうかをチェックし、ない場合は挿入します

Related 関連記事

  1. 1

    異なるエンティティの動作がかなり異なる場合、ジェネリックリポジトリパターンをどのように管理する必要がありますか?

  2. 2

    サイトコアでカスタムコンテンツエディター([エディター]タブ)を作成する場合、別のVSプロジェクトでaspxページが必要な場合のURLの形式はどうなりますか

  3. 3

    単体テストでは、アプリケーションサーバーで実行していない場合にデータソースをどのようにセットアップする必要がありますか?

  4. 4

    ジェネリック型が異なる場合にインターフェースを使用することは理にかなっていますか

  5. 5

    ネットワーク(プログレッシブウェブアプリ)で利用可能な更新がある場合、キャッシュは更新されるかどうかになります。はいの場合、どのように?

  6. 6

    Kotlin:ジェネリック型を返す関数。どの具体的なタイプを返す必要があるかわからない場合はどうなりますか?

  7. 7

    C ++でテンプレートなしのジェネリック型を返すにはどうすればよいですか?

  8. 8

    ReactNativeのReactNavigationライブラリによって提供されるスタックナビゲーターコンポーネントのinitialRouteNameプロパティが存在しない場合はどうなりますか

  9. 9

    Typescript:ジェネリック型が設定されている場合はオプションのpropが必要になります

  10. 10

    テンプレートエイリアス宣言が新しいタイプのファミリに解決される場合はどうなりますか?

  11. 11

    同じユーティリティスクリプトが異なるSCMディレクトリにチェックインされていても、どこでも同じである必要がある場合、それらが同じであることを確認するにはどうすればよいですか?

  12. 12

    エンティティにインデックス付けされていないデータが以前にある場合、インデックス作成はGoogleアプリデータストアでどのように機能しますか?

  13. 13

    なぜテンプレート/ジェネリックが必要なのですか?継承は十分ではありませんか?

  14. 14

    関数内で参照を作成する場合、ジェネリック型をライフタイムパラメーターを必要とするトレイトにバインドするにはどうすればよいですか?

  15. 15

    XCTest:テストターゲットに変更を加えるだけの場合、Xcodeがプロジェクトを不必要に再コンパイルしないようにするにはどうすればよいですか?

  16. 16

    CloudFormationテンプレートを更新するときに、「互換性のない起動テンプレート:ネットワークインターフェイスのデバイスインデックスはゼロでなければなりません」を解決するにはどうすればよいですか?

  17. 17

    laravel eloquent:データがない場合、Eloquentリレーションはnullオブジェクトを返す代わりに何かを返す必要があります

  18. 18

    初めて開いたアプリをチェックする必要がありますかどうかはいの場合は直接メインアクティビティに移動し、そうでない場合は紹介画面に移動します

  19. 19

    C ++:一度使用した後にテンプレートのジェネリックデータ型を再宣言するのはなぜですか?

  20. 20

    チェックポイントされたデータをコミットできない場合、正確にはどうなりますか?

  21. 21

    JavaにはC ++テンプレートのようなジェネリックの控除がありますか?

  22. 22

    必要なすべてのデータがテキストとしてフォーマットされていない場合、レビューをスクレイピングするにはどうすればよいですか?

  23. 23

    マップは常に参照型ですが、非ポインターレシーバーから返された場合はどうなりますか?

  24. 24

    リアルタイムデータベースからActionViewリンクを取得するButtonのIfメソッドを使用するにはどうすればよいですか?リンクがない場合はトーストメッセージを表示しますリンクはありません

  25. 25

    コンストラクターの障害が発生した場合、どのようなクリーンアップを行う必要がありますか?

  26. 26

    構成環境をデプロイするときに、dockerデーモンが割り当てるネットワークIPアドレスを使い果たした場合はどうなりますか?

  27. 27

    JavaScript、ジェネレーター-終了条件が設定されていない場合、「yield」はどのようにループから抜け出しますか?

  28. 28

    データが変更されない場合、Reactコンポーネントで状態を使用することは悪い習慣ですか?代わりに、クラスのプロパティを使用する必要がありますか?

  29. 29

    MySQL / PHPは、データがデータベーステーブルにあるかどうかをチェックし、ない場合は挿入します

ホットタグ

アーカイブ