C++ unordered_set 插入插入 PHP

C++ unordered_set insert insert PHP

我有一个 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);

它returns 1123。请帮忙。

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

如果您想获得与 PHP 类似的行为,请使用 std::vector instead, with emplace_back (or push_back) 添加您的元素。

如果你想走另一条路,那么在 PHP 你可以使用 array_unique