回答
如果你所有的只是離散變量,那麼你就必須這樣做檢查這樣其他的方式。
有你要考慮,雖然幾件事情:
這是不好的做法,繼續使用'b'
一遍又一遍又一遍。將其分配爲一個常量或者將所有其他變量與第一個變量進行比較,以便如果需要將'b'
更改爲'c'
,則只需在代碼中執行一次即可。
if(a=='b' && a == b && a == c && a == d/*...*/)
此外,這仍然是很多代碼來維護。取決於鏈條的運行時間(你會上升到a==g && a==h && a == i
還是更遠?)您可能想要將這些變量包裝到vector
並反覆檢查它們。
bool equal = std::find_if_not(
characters.begin(), characters.end(),
[](const char & c) {return c == 'b';}
) == characters.end();
如果您打算把感興趣的字符放在容器中,那麼你應該考慮使用'std :: find'。你也可以考慮使用'std :: string'並使用它的find成員函數。 –
@JamesAdkison我不會推薦使用'std :: string',只是因爲它混淆了容器的用途。 OP指的是離散字符,對於這種情況,'std :: vector'比'std :: string'更能傳達容器的目的。 – Xirema
+1,關於'std :: string'的公平點。也可以考慮使用'std :: set'或'std :: unordered_set'來避免線性搜索(如果這可能成爲問題)。 –
你的方式看起來不錯。一些編碼標準需要額外的括號像這樣
if((a=='b') && (b=='b') && (c=='b') ...)
我個人不認爲這是必要的,如果你知道你的運算符優先級。請參閱http://www.cppreference.com並搜索優先順序。
,如果你想要一個簡潔的方式來描述意圖那就有點對模板功能可以幫助您:
template<class X, class Y>
bool all_equal(X&& x, Y&& y)
{
return (x == y);
}
template<class X, class Y, class...Rest>
bool all_equal(X&& x, Y&& y, Rest&&...rest)
{
return all_equal(std::forward<X>(x), std::forward<Y>(y))
&& all_equal(x, std::forward<Rest>(rest)...);
}
,讓這樣的代碼:
int main()
{
int a = 10;
int b = 10;
int c = 10;
int d = 11;
std::cout << std::boolalpha << all_equal(a, b) << std::endl;
std::cout << std::boolalpha << all_equal(a, b, c) << std::endl;
std::cout << std::boolalpha << all_equal(a, b, c, d) << std::endl;
}
- 1. 如果陳述不正確
- 2. 如果陳述不正確
- 3. 如何檢查此陳述的冗餘?
- 4. 如果陳述沒有正確評估
- 5. Django如果陳述不正確
- 6. 如果陳述沒有正確執行
- 7. 如果陳述似乎不正確javascript
- 8. 確定使用正確的陳述
- 9. 如果陳述無法檢查條件
- 10. 如何將多個陳述合併爲一個陳述?
- 11. 如果陳述沒有正確地檢查字符串是否相等
- 12. 邏輯陳述不正確評估?
- 13. 案件陳述輸出不正確?
- 14. 如果陳述不正常?
- 15. 檢查約束和個案陳述
- 16. 如何糾正我的案件陳述?
- 17. 案件陳述裏面如果陳述
- 18. 如果陳述「不是陳述」?
- 19. 如果陳述在案例陳述(VB.Net)
- 20. 如何檢查IF陳述中的數組
- 21. SML:多個案例陳述
- 22. Oracle多個案例陳述
- 23. SQL多個案例陳述
- 24. 多個IF和陳述excel
- 25. SQL - 多個案例陳述
- 26. 多案例陳述方案
- 27. 如何縮短「和」陳述?
- 28. 如何隱藏一個陳述並揭示另一個陳述?
- 29. 如何將這兩個陳述合併成一個陳述?
- 30. 查看和臨時陳述
什麼是你想做?驗證所有這些變量是否等於「b」?你做這件事的方式並沒有什麼不同。就個人而言,我會將支票封裝在parens中,即使它們不是絕對必要的,例如:'((a =='b')&&(b =='b')&& ...)'。 – Frecklefoot
但是,如果您可以選擇將所有這些變量放入某種類型的集合中,則可以對它們進行迭代,這將使代碼更易於維護。 – Frecklefoot
_「我已經找到了解決我的問題的其他方法,但想知道未來如何做到這一點」_因此,您應該在第一名的答案中記錄這一點。 –