![](/img/trans.png)
[英]C++ unordered_map<T, int> how to distinguish null cell from 0
[英]how to distinguish 0 and NULL in c++
如何區分c++中的0和NULL? 我只想在元素真的是 NULL 但不是 0 時打印。
vector<int> vec = {0, NULL};
for (auto it : vec){
if (it == NULL) cout << "NULL";
}
實際上我想使用 NULL 來表示二叉樹中的 NULL 節點(作為向量輸入)。 如果我使用“NULL”,那么輸入不能是簡單的向量,有沒有合適的方法來解決它?
不可能。 在這種情況下,NULL 到處都被 0 替換。 編譯器將 NULL 視為與 0 完全相同。
int 不能是nullptr
,因為它是 integer 類型。
您正在使用宏,因此NULL
將替換為 0。因此,您實際上是在檢查每個元素的向量值是否等於 0。
如果要檢查 null 指針,則應使用關鍵字nullptr
而不是宏NULL
。
如果要存儲指針,則必須使用vector<int*>
。 在這種情況下,您可以使用簡單的方法輕松檢查 null
if(!ptr)
<-- 如果指針不是 null
或者
if( ptr == nullptr )
完全一樣。
作為附加說明,您在循環數組時復制每個元素,您應該改用const auto&
(或auto&
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.