[英]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
不允许重复的元素。 由于您要推入counter
和counter+1
,因此通常会尝试将同一元素推两次,而其中一次被拒绝。
如果要与PHP具有类似的行为,请改用std::vector
,并通过emplace_back
(或push_back
)添加元素。
如果您想采用其他方法,则可以在PHP中使用array_unique
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.