我是否保证std :: unique将保留第一个元素?

Vin*_*ent 5 c++ standards unique stl-algorithm c++11

考虑std::vector<std::pair<int, int>>基于对的第一个元素的比较进行排序.

现在假设我申请:

std::unique(std::begin(v), 
            std::end(v), 
            [](const std::pair<int, int>& x, const std::pair<int, int>& y)
            {return x.first == y.first;});
Run Code Online (Sandbox Code Playgroud)

我是否有保证std::unique每个相等范围的第一个元素?

Fan*_*Fox 9

是.

从[first,last]范围中的每个连续的等效元素组中消除除第一个元素之外的所有元素,并返回该范围的新逻辑结尾的过去的迭代器.

从这里.

BinaryPredicate你给刚刚意味着,任何元素y等于前一个元素x将被删除.