標準庫忽略實現基本操作爲std::set
和std::map
像繼承初始化從語法的std ::設置或std ::地圖
set<T> set<T>::getUnion(set<T> other)
和
bool map<K,V>::contains(K key)
我知道有冗長和/或這些方法的間接解決方法,但如果我希望我的代碼具有最大的可讀性和表達性,我將不得不從STL繼承,編寫我自己的Set
和Map
類,並自己實現它們。是的,我知道這樣做的說教,但事實是STL是不完整的。
我已經這樣做了,但現在我可以使用,例如,未初始化我的新類,
Set<int> s = {1,2,3,4};
如何繼承了std
類這些初始化?
'bool map :: contains(K key)'僅在非常狹窄的用例中有用。大多數情況下,您想要訪問給定密鑰的值。 –
所以'vector :: back()'。大多數情況下,您只需要'push_back',迭代或按索引訪問。但是這並沒有阻止STL作者指定「back」。實際情況是,爲'map'實現的任何爲Python'dict'實現的操作都應該實現。 Python'set'也是一樣。問題不在於使用頻率,而在於數據結構所代表的數學,直觀和邏輯結構。 –