新手程序员在这里。
我有一个带有双值的矢量。
vector<double> P = {205.65,205.7,205.5,205,203.65,200.70...}
现在我想将两个随机元素之间的差异存储在一个单独的容器中。 我不想要一个循环,减法中没有顺序。我只想知道如何从另一个元素中减去一个元素并将结果存储在另一个容器中。
答案 0 :(得分:5)
嗯,Q.push_back(P[i] - P[j])
是单向的。
Q
是一个支持std::vector<double>
的容器(例如push_back
)。
i
和j
是size_t
类型,位于向量P
的范围内。 P[i]
正在访问i
的{{1}} th 元素。请注意,索引从0开始。
最后,请注意P
和i
需要索引容器的有效元素:如果它们在容器的范围之外,则程序行为是 undefined 。在没有立即运行时故障的情况下,这通常可以是一种静默效果,但它可能会产生潜在的危险后果,例如覆盖内存中相邻变量的值!因此,一些程序员牺牲了一点性能并使用j
代替P.at(i)
,因为如果尝试超出范围访问,C ++标准要求前者抛出异常。
答案 1 :(得分:1)
让我们说你想要在i和j位置的元素之间存在差异。
步骤1:让我们使用以下语句定义新的2D矢量:
vector <double> diff2(P.size());
vector < vector <double> > diff(P.size(),diff2);
注意:diff [i] [j]将保存P [i] - P [j]的值;
步骤2:现在将矢量diff枚举为:
diff[i][j] = P[i] - P[j];
请注意:i和j是要减去的元素的索引。索引从0开始。
示例:diff [1] [3] = P [1] - P [3] = 205.7 - 205 = 0.7