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

时间:2017-01-10 06:30:49

标签: javascript c++

我正在为我的客户构建一个javascript指标,他们给了我旧系统的C ++代码。我之前从未做过C ++程序。下面是C ++代码的一部分。我想知道的是在行中 if (it3 != d1Swing.end() && it3->x == h[i].x) --(it1 = it2 = it3); - (it1 = it2 = it3)是什么意思?它在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 个答案:

答案 0 :(得分:1)

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

作业的价值是对分配给的对象的引用,以及与权利相关联的作业。

--(it1 = it2 = it3)

--(it1 = (it2 = it3))

并且打算将it3的值分配给it2it1,然后递减it1
(我有一种预感,这可能是未定义的,当你在C ++中聪明时,这是经常发生的事情。)

it1显然是为了“落后一步”it2

更合理的写作方式是

it2 = it3;
it1 = it2 - 1;

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