什麼是最簡單的方法來檢查某些std :: map的值是否等於所有鍵,沒有(至少可見)遍歷所有鍵他們?它可以在一個操作中完成嗎?最簡單的方法來檢查std :: map的所有值是否相等
1
A
回答
3
使用std::unique
然後驗證地圖的開始迭代和結束迭代器std::unique
返回之間的距離是1
0
此功能可滿足您的需求
template <typename Map>
bool IsUnique(const Map& i_map)
{
return std::count_if(i_map.cbegin(), i_map.cend(),
[&i_map] (typename Map::const_reference v)
{
return v.second == i_map.cbegin()->second;
}) == i_map.size();
}
+3
這不是一個有效的解決方案,因爲'count_if'不會提前終止(只要發現第一個不匹配,該函數就會返回)。 ;-) –
2
獲取的價值第一個元素,然後使用std::all_of
自定義謂詞檢查剩餘的元素。喜歡的東西:
if (!mp.empty()) {
int val = mp.begin()->second;
result = std::all_of(std::next(mp.begin()), mp.end(),
[val](typename <insert map type>::const_reference t){ return t->second == val; });
}
+0
std :: all_of是C++ 11的順便說一句 – BlueTrin
0
你甚至可以做到這一點沒有if語句檢查性病的空地圖:: all_of如果你可以用一個多餘的比較活:
template<typename Key, typename Value>
bool all_equal(std::map<Key, Value> const& map)
{
// the lambda will only get called when the map is not empty
// so we can safely access begin()->second
auto const cmpWithFirst = [&](std::pair<Key,Value> const& i)
{
return map.begin()->second == i->second;
};
return std::all_of(map.begin(), map.end(), cmpWithFirst);
}
與此相比,所有元素第一個元素,如果有的話,包括第一個元素與第一個元素的比較。
相關問題
- 1. 檢查4個數字是否相等的最簡單方法?
- 2. 最簡單的方法來檢查OL3功能相等
- 3. 最簡單的方法來檢查字符串是否爲URL
- 4. 檢查數組中的所有元素是否相等的最快方法
- 5. 最快的方法來檢查是否所有的字典都等於假?
- 6. 簡單的方法來檢查FormatString是否有效?
- 7. 檢查所有表單值以查看它們是否爲空的最簡單方法是什麼C#?
- 8. 最簡單的方法來檢查方法是否由Castle DynamicProxy自動實現
- 9. 最簡單的方法來檢查值的存在
- 10. 檢查兩個數字是否相等的最佳方法
- 11. 有沒有簡單的方法來增加Map對象的值?
- 12. 檢查數組中的所有值是否不相等(java)
- 13. 檢查列表中的所有值是否相等
- 14. 如何檢查數組中的所有值是否相等。 C++
- 15. 一個簡單的方法來檢查文本框是否有值?
- 16. 檢查兩個CRgn是否相交的最簡單方法是什麼?
- 17. 檢查兩幅圖像是否相同的最簡單方法是什麼?
- 18. 最簡單的方法來檢查整數是+1或-1 Java
- 19. 是否有任何簡單的方法來檢查在Bash中是/否選項的所有可能性?
- 20. 簡單的方法來檢查對象是否可打印
- 21. 簡單的方法來檢查項目是否在列表中?
- 22. 簡單的方法來檢查是否改變狀態
- 23. AS3簡單的方法來檢查聲音是否完成
- 24. 檢查JS值是否存在的最簡單方法是什麼?
- 25. 檢查AzureTable是否有任何數據的最簡單有效的方法?
- 26. 有沒有簡單的方法來檢查一個mp4文件是否有效?
- 27. 是否有.net方法檢查用戶密碼是否簡單
- 28. 方法來檢查引用相等所有類型
- 29. 是否有一個很好的簡單方法來檢查Javascript中的變量是否有值?
- 30. 最簡單的方法來檢查是否已連接服務器
這不是一個有效的解決方案,因爲'std :: unique'修改了地圖。 – Andrey
@Andrey:不過,OP要求採用'最簡單'的方式(在'一次操作'中可行);我認爲一個'std :: unique'解決方案會很短,但實際上可能不是(我開始懷疑'std :: unique'可以用於'std :: map'迭代器,因爲迭代器指向一個與「const」第一個字段配對)。 –