在将C++转换为javascript时需要帮助
问题描述:
我正在为我的客户端构建一个javascript指示器,他们向我提供了低于他们旧系统的C++代码。我从来没有做过C++程序。以下是C++代码的一部分。我想知道的是if (it3 != d1Swing.end() && it3->x == h[i].x) --(it1 = it2 = it3);
- (it1 = it2 = it3)是什么意思?它在javascript中看起来像什么?在将C++转换为javascript时需要帮助
vector<PTPoint::PTIndexPoint> dnSwing;
list<PTPoint::PTIndexPoint> hq, lq;
vector<PTPoint::PTIndexPoint>::iterator it1 = d1Swing.begin(), it2 = d1Swing.begin(), it3 = ++d1Swing.begin();
//
// more code here
//
for (int i = 0; i < period; ++i)
{
while (!hq.empty() && hq.back().y < h[i].y) hq.pop_back();
hq.push_back(h[i]);
while (!lq.empty() && lq.back().y > l[i].y) lq.pop_back();
lq.push_back(l[i]);
if (it3 != d1Swing.end() && it3->x == h[i].x) --(it1 = it2 = it3);
//
// more code here
//
}
//
// more code here
//
p->swap(dnSwing);
在此先感谢。
tslin
答
这意味着他们以前的程序员喜欢“聪明”。
赋值的值是对分配给对象的引用,赋值与右引号相关联。
--(it1 = it2 = it3)
是
--(it1 = (it2 = it3))
,它的意图的it3
值分配给it2
和it1
,然后再递减it1
。
(我有一种预感,这可能是不确定的,这是经常发生的,当你正在C++聪明的事。)
it1
显然意在“一步落后” it2
。
编写一个更合理的方式是
it2 = it3;
it1 = it2 - 1;
(在JavaScript中,我怀疑你需要使用数组的索引,而不是迭代器的工作来完成同样的事情。)
+0
非常感谢您的回答。我以为是it1 = it2,it2 = it3,it3 - 1;是的,我将使用数组和索引。 – tslin
你最好发布最初的C++代码,以及将您尝试的翻译分别发布到JavaScript。 –
不要翻译。相反,找出代码的作用,并使用JavaScript功能复制行为。 – Rakete1111
谢谢大家的建议。我已经更新了我的问题。 @ Cheersandhth.-Alf我删除了javascript部分,因为它没有必要,也没有涉及到这个问题。 – tslin