2009-06-21 14 views
4

古いCコードをJavaに移植する途中ですが、Javaに慣れていないため、memmoveを見つけるのに問題が発生しました。 Javaにそのようなメソッドがありますか?私は、かなり明白なものを見落としていると仮定するために十分な研究をしました。前もって感謝します。Java memmove?

+0

あなたは達成しようとしていることを打ち明けてください。 – Tom

+0

CからJavaへのフォワードエラー修正コーデックを移植しています。オリジナルのプログラマは、ベクトル計算でデータを操作するためにmemsetとmemmoveを使用しました。 –

答えて

10

System.arraycopyを使用することができます。実行したいのは、配列内のものをシャッフルするだけです。

特に、この関数は、ソースとターゲットが同じ配列内にあり、範囲が重複することを許可します。その意味ではmemmoveのようです。

+2

配列操作メソッドのSystemクラスを検索したのは疑いありません。どうもありがとう! –

4

実際には、System.arrayCopy()はこれまでの学校のアプローチであり、a)Java 5以前のバージョンを使用している場合、またはb)既存の配列間でコピーする必要がある場合にのみ使用してください。配列のコピーを作成したい場合は、Arrays.copyOf()またはArrays.copyOfRange()

+0

memmoveは特に、範囲が重複することを可能にします。 (例えば、範囲a [0-5]を[1-6]にコピーしてください)。 – jalf

+0

memcoveと同等のもの(memcpyと同等)、普通はcaseそれにもかかわらず、良い答えです。 –

+0

@jalf:Jhericoが答えで述べたように、copyOfとcopyOfRangeはどちらも新しい配列を作成し、同じ配列に要素をコピーするのには使用できません。 –

関連する問題