繁体   English   中英

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);

返回1123 请帮忙。

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

如果要与PHP具有类似的行为,请改用std::vector ,并通过emplace_back (或push_back )添加元素。

如果您想采用其他方法,则可以在PHP中使用array_unique

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM