我在C++上有一個代碼,我必須在PHP上重寫。 奇怪的事情發生在我身上,因爲我是PHP程序員,不太瞭解C++。 這是代碼:代碼C++ unordered_set insert insert PHP
#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
。請幫忙。
?你知道它的目的是什麼嗎?我問的原因是因爲你將一堆重複元素插入到集合中,而'unordered_set'只保留每個獨特元素的1個副本。 –
@BenjaminLindley這是問題:OP(不可否認)不太瞭解C++。你有一點:原始代碼的特定部分沒有意義。 –
@MrLister:是的,我只是好奇他是什麼讓他認爲'unordered_set'是這個工作的正確容器(無論那個工作是什麼)。它通常不是你學習C++時學到的第一批容器之一,大多數人確實瞭解的第一個容器('std :: vector')就是這個工作的正確容器。 –