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
不允许重复元素。由于您正在推送 counter
和 counter+1
,因此您通常会尝试将同一元素推送两次,其中一次会被拒绝。
如果您想获得与 PHP 类似的行为,请使用 std::vector
instead, with emplace_back
(or push_back
) 添加您的元素。
如果你想走另一条路,那么在 PHP 你可以使用 array_unique
我有一个 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
不允许重复元素。由于您正在推送 counter
和 counter+1
,因此您通常会尝试将同一元素推送两次,其中一次会被拒绝。
如果您想获得与 PHP 类似的行为,请使用 std::vector
instead, with emplace_back
(or push_back
) 添加您的元素。
如果你想走另一条路,那么在 PHP 你可以使用 array_unique