ALL,STL中是否有排序的容器?
STL中是否有排序的容器? 我的意思是如下:
我有一個std :: vector,其中Foo是一個自定義的類。我也有一個比較類的比較,它將比較Foo類的字段。
現在,某個地方在我的代碼我做:
std::sort(myvec.begin(), myvec.end(), comparator);
將根據我在比較中定義的規則排序向量。
現在我想在該向量中插入Foo類的元素。 如果我可以,我想這樣寫:
mysortedvector.push_back(Foo());
,並會發生什麼樣的是,向量將根據比較它的地方把這個新元素。
相反,現在我必須寫:
myvec.push_back(Foo());
std::sort(myvec.begin(), myvec.end(), comparator);
這只是浪費時間,因爲載體已經排序,所有我需要的是新的元素適當的地方。由於我的程序的性質,我不能使用std :: map <>,因爲我沒有鍵/值對,只是一個簡單的向量。
如果我使用stl :: list我需要在每次插入後再次調用排序。
非常感謝您提供任何建議。
什麼'的std :: set'? – us2012 2013-03-23 01:50:23
如果你知道它會去哪裏,你可以使用insert() – james82345 2013-03-23 01:58:10
@ us2012,我看着std :: set。問題是那些對象將會呈現在網格中,用戶可以根據所有類成員對它們進行排序,並以任何他們認爲合適的方式修改它們。由於std :: set成員是const定義的,所以這個容器不適合我。 – Igor 2013-03-24 03:13:33