在将C++转换为javascript时需要帮助

在将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

+1

你最好发布最初的C++代码,以及将您尝试的翻译分别发布到JavaScript。 –

+3

不要翻译。相反,找出代码的作用,并使用JavaScript功能复制行为。 – Rakete1111

+0

谢谢大家的建议。我已经更新了我的问题。 @ Cheersandhth.-Alf我删除了javascript部分,因为它没有必要,也没有涉及到这个问题。 – tslin

这意味着他们以前的程序员喜欢“聪明”。

赋值的值是对分配给对象的引用,赋值与右引号相关联。

--(it1 = it2 = it3) 

--(it1 = (it2 = it3)) 

,它的意图的it3值分配给it2it1,然后再递减it1
(我有一种预感,这可能是不确定的,这是经常发生的,当你正在C++聪明的事。)

it1显然意在“一步落后” it2

编写一个更合理的方式是

it2 = it3; 
it1 = it2 - 1; 

(在JavaScript中,我怀疑你需要使用数组的索引,而不是迭代器的工作来完成同样的事情。)

+0

非常感谢您的回答。我以为是it1 = it2,it2 = it3,it3 - 1;是的,我将使用数组和索引。 – tslin