我正在尝试将以下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;
用于覆盖数组中相同位置的值的目的是什么?
答案 0 :(得分: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);
答案 1 :(得分:3)
用于覆盖数组中相同位置的值的目的是什么?
没有。它在末尾添加了一个元素,因此增加了vector
的大小。
在C ++中,这将转换为push_back
。
答案 2 :(得分:1)
vector.length
后, vector[vector.length]
会增加。