2017-06-17 41 views
-2

怎樣的獨特性和調整維護,沒有重複發生:的std ::獨特和載體::調整

for(map <string, vector<int> >::iterator it = m.begin(); it != m.end(); ++it) 
    { 
     vector<int>::iterator sz = unique((it->second).begin(),(it->second).end()); 
     (it->second).resize(distance((it->second).begin(),sz)); 
    } 

矢量進行排序。

+3

woops,忽略第二個是矢量。唯一的作品只有在排序的向量上。 Unique將非獨特的元素拉到矢量的後面,然後調整大小就會將它們切斷。另外,擦除將比調整大小更可行。 – Incomputable

+0

實際上,矢量按輸入的方式排序。 – nRT

+2

@nRT - 究竟是什麼問題?你的問題缺乏具體細節。 – PaulMcKenzie

回答

1

所以基本上問題是關於閱讀文檔。


std::unique()拉元件與載體的背面,並返回迭代到第一非唯一元素。

一開始序列可能看起來像:1 1 2 2 2 3 6 6

呼叫後,以獨特的順序變爲:1 2 3 6 ...(重複)。


然後 distance()計算有多少個唯一元素,它們是從第一個唯一元素到第一個非唯一元素的距離。 .resize()只是切斷了非獨特的部分。

.erase(sz, (it->second).end);在這種情況下會更好用。循環本身也很奇怪。