reinterpret_cast が実行できることは理解していますが、データ変換は実行されていないと思います。ループして 1 つずつ実行したくないので、ポインター型とデータ型の変換の両方を行う洗練された方法があるかどうか疑問に思います。ありがとう!
1746 次
1 に答える
3
私が想定しているように、 s のfloat*
配列の最初の要素を指すものがいくつかfloat
あり、それらを s として使用したい場合int
は、いくつかのオプションを提案します。
したくない場合は
float
、取得しないでくださいfloat
。int
最初に s の配列を格納するだけです。同様に、 s が不要な場合は
int
、コードfloat
全体で s を使用するように変更してください。本当に
float
s の配列が必要で、ある時点でそれらをint
s に変換したい場合は、必要なときにそれを行ってください。static_cast<int>
安全な方法で各要素の変換を行うために使用します。配列全体を一度に変換したい場合は、次のようにすることをお勧めします。
float float_array[N] = /* ... */; std::vector<int> ints(float_array, float_array + N);
または、本当に配列に固執したい場合は、次を使用します
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 に答える