0

次のJavaScriptコードをC++に移植しようとしています。

var vector = new array();     
for (var i = 0; i < points.length; i++)
        {
            var newX = points[i].X * cos - points[i].Y * sin;
            var newY = points[i].Y * cos + points[i].X * sin;
            vector[vector.length] = newX;
            vector[vector.length] = newY;
            sum += newX * newX + newY * newY;
        }

私はこれらの行で何が起こっているのか理解できないようです:

vector[vector.length] = newX;
vector[vector.length] = newY;

配列内の同じ場所にある値を上書きするのはどのような目的ですか?

4

3 に答える 3

7

JavaScript配列は動的に拡張して新しい要素を保持するため、新しいアイテムを追加するには、次に使用可能なインデックスに割り当てるだけで済みます。

Array indexes are zero-based, so given an array called "vector", vector.length is one past the last element. Nothing is being over-written; The line vector[vector.length] = x appends x to the end of the array.

In JavaScript, the following methods of appending elements are identical, though using push more clearly indicates your intent:

vector = [1,2,3];
vector[vector.length] = 4; // [1,2,3,4]
vector.push(5); // [1,2,3,4,5]

The equivalent C++ code (assuming you're using std::vector) would

my_vector.push_back(newX);
于 2012-08-13T18:13:53.650 に答える
3

配列内の同じ場所にある値を上書きするのはどのような目的ですか?

そうではありません。最後に要素を追加するため、のサイズが大きくなりますvector

C ++では、これはに変換されますpush_back

于 2012-08-13T18:13:05.943 に答える
1

vector.lengthに割り当てるたびに増加しvector[vector.length]ます。

于 2012-08-13T18:13:03.377 に答える