2014-01-10 53 views
0

我應該把一個int數組與其他數量不同?我的意思是我可以用作標誌的東西。我可以使用null我可以在C++中用作int數組中的標誌嗎?

+2

什麼樣的整數將被存儲在數組中?你爲什麼需要一面旗幟? – BlackJack

+1

您計劃在陣列中存儲的值的範圍是多少?如果範圍是未知的,那麼選擇一個數字可能是個壞主意。 –

+0

我使用這個數組作爲包含所有數字的計算器。我想要一個標誌,顯示數字後面有+, - 或*等符號。 – zahra

回答

2

NULL並不特殊。當分配給int時,NULL簡單地被評估爲0

一個int只能包含整數值。 int上沒有「開/關」位來指示它是否有值。一個int總是有一個值(有時未初始化的,但那是另一回事)

無論你是否可以使用NULL(因此0)作爲一個特殊的標誌取決於你和你的計劃。是0這個int的合法值嗎?如果是這樣,你就不能使用它。你必須找到另一種方式。

另一種方法是使用來自Boost的optional之類的東西。 optional是一個類模板,可以包含您的int。它還包含一個布爾標誌,指示它是否「具有」int值。下面是一個示例使用情況:

optional <int> v; // not initialized yet 

assert (!v); // assert that it hasn't got a value yet 
v = 41; // now give it a value 
assert (v); // assert that is has a value now 
const int savedValue = *v; // get the assigned value 
assert (savedValue == 42); 

如果你沒有或者不想升壓的optionalhere is an implementation一個小測試工具一起。

1

只有您可以通過確定哪個值(s)永遠不能在你的應用程序中「有效」。

在C++中,表達NULL是不是一個神奇的「這個沒有價值」的東西—有時是等同於0但即便如此,不一定是你的應用程序中的「無效」值。

這可能是因爲您最好用另一種方式標記未使用的索引,或者使用未使用的索引列表,或者使用像std::set這樣的容器,並且首先不要使用未使用的值。

相關問題