标准::唯一和矢量::调整大小

std::unique and vector::resize

本文关键字:调整 唯一 标准      更新时间:2023-10-16

唯一和调整大小如何保持不重复发生:

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));
    }

对向量进行排序。

所以基本上问题是关于阅读文档。


std::unique()将元素拉到向量的背面,并将迭代器返回到第一个非唯一元素。

在开始序列中可能看起来像:1 1 2 2 2 3 6 6

调用唯一后,序列更改为:1 2 3 6 ...(重复(。


然后distance()计算有多少个唯一元素,即从第一个唯一元素到第一个非唯一元素的距离。 .resize()只是切断了非唯一的部分。

在这种情况下,.erase(sz, (it->second).end);会更好使用。循环本身也相当奇怪。