C ++ unordered_set插入插入PHP

时间:2016-12-05 19:06:55

标签: php c++ unordered-set

我有一个关于C ++的代码,我必须在PHP上重写。 奇怪的事情发生在我身上,因为我是PHP程序员并且不熟悉C ++。 这是代码:

#include <iostream>
#include <unordered_set>
using namespace std;

int func(int choice) {

    unordered_set<int> hset;
    for (int counter = 0; counter < choice; counter++) {
        hset.insert(counter);
        if (counter % 2 == 0) {
            hset.insert(counter);
            hset.insert(counter + 1);
        }
    }
    return hset.size();
}

int main(int argc, char** argv) {
    cout << func(561);
    return 0;
}

代码输出为:562;

我编写了这样的PHP代码:

function func($choice) {

$hset = [];

for ($counter = 0; $counter < $choice; $counter++) {
    array_push($hset, $counter);
    if ($counter % 2 == 0) {
        array_push($hset, $counter);
        array_push($hset, $counter + 1);
    }
}

    return count($hset);
}

echo func(561);

返回1123。请帮忙。

1 个答案:

答案 0 :(得分:2)

C ++&#39; unordered_set不允许重复元素。由于您正在推送countercounter+1,因此您通常会尝试将相同的元素推送两次,其中一次会被拒绝。

如果您希望获得与PHP类似的行为,请使用std::vector代替emplace_back(或push_back)来添加元素。

如果你想采用其他方式,那么在PHP中你可以使用array_unique