unique和resize如何保持不重复:
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));
}
矢量已排序。
答案 0 :(得分:1)
所以基本上问题是关于阅读文档。
std::unique()
将元素拉到向量的后面,并将迭代器返回到第一个非唯一元素。
在开始序列中可能看起来像:1 1 2 2 2 3 6 6
在对唯一性的调用之后,序列变为:1 2 3 6 ...(重复)。
<小时/> 然后
distance()
计算有多少独特元素,即从第一个唯一元素到第一个非唯一元素的距离。 .resize()
只是切断了非独特的部分。在这种情况下,
.erase(sz, (it->second).end);
会更好用。循环本身也很奇怪。