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 数组动态扩展以容纳新元素,因此要追加新项目,您只需将其分配给下一个可用索引。

数组索引是从零开始的,所以给定一个名为“vector”的数组,vector.length它是最后一个元素的后一个。没有任何东西被覆盖;该行vector[vector.length] = x附加x到数组的末尾。

在 JavaScript 中,以下附加元素的方法是相同的,尽管使用push更清楚地表明了您的意图:

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

等效的 C++ 代码(假设您正在使用std::vector)将

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 回答