0

reinterpret_cast が実行できることは理解していますが、データ変換は実行されていないと思います。ループして 1 つずつ実行したくないので、ポインター型とデータ型の変換の両方を行う洗練された方法があるかどうか疑問に思います。ありがとう!

4

1 に答える 1

3

私が想定しているように、 s のfloat*配列の最初の要素を指すものがいくつかfloatあり、それらを s として使用したい場合intは、いくつかのオプションを提案します。

  1. したくない場合はfloat、取得しないでくださいfloatint最初に s の配列を格納するだけです。

  2. 同様に、 s が不要な場合はint、コードfloat全体で s を使用するように変更してください。

  3. 本当にfloats の配列が必要で、ある時点でそれらをints に変換したい場合は、必要なときにそれを行ってください。static_cast<int>安全な方法で各要素の変換を行うために使用します。

  4. 配列全体を一度に変換したい場合は、次のようにすることをお勧めします。

    float float_array[N] = /* ... */;
    std::vector<int> ints(float_array, float_array + N);
    
  5. または、本当に配列に固執したい場合は、次を使用しますstd::copy

    float float_array[N] = /* ... */;
    int int_array[N];
    std::copy(float_array, float_array + N, int_array);
    

    ただし、上記std::vectorの方がはるかに好ましいです。

于 2012-11-29T20:16:25.743 に答える