2009-10-15 47 views

回答

5

您應該能夠將std::unique應用於QList的迭代器。 std::unique只需要迭代器是前向迭代器(herehere),並且看起來QList的迭代器滿足該要求。

+0

好,還需要編譯STL支持的QT(迄今並不需要) – MadH 2009-10-15 12:35:44

+0

+1,但真正的, std :: erase + std :: unique應該可以正常工作 – MadH 2009-10-15 12:36:21

0

現在我有以下幾點:

//filter out duplicates: stl algorithm 'unique' would be useful here 
     QList<int> uniqueIDs; 
     qStableSort(res); 
     foreach(int id, res) 
     if ((uniqueIDs.empty()) 
       || (uniqueIDs.back() != id)) 
      uniqueIDs.push_back(id); 
     swap(res, uniqueIDs); 

資源是用於過濾的輸入,而不是滿意。

2

請考慮使用QSet代替(並且在需要列表時使用QSet::toList)。

+0

set是個好主意。我使用列表的唯一原因是添加項目更容易(並且通過呼吸首次搜索收集數以千計的項目)。 – MadH 2009-10-15 14:01:02

+0

'mySet.insert(foo)'對我來說似乎並不困難。 – 2009-10-15 15:43:37

+0

@Lukáš以及處理器更難... – TimW 2009-10-16 12:26:12

1

這是我創造了我唯一的整數列表:

列表=展示Qset :: fromlist裏(名單).toList();

無需添加性病,它可能不是使用非常大的整數的最佳途徑,雖然

+0

非常好! +1。 – 2012-03-26 20:46:25