Unique_copy未返回预期输出

时间:2016-12-14 14:48:13

标签: c++ c++11 unique

我有这个简单的代码,我知道我必须犯一些愚蠢的错误:

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<iterator>
using namespace std;

int main()
{
vector<string> coll{"one", "two", "two", "three", "four", "one"};
vector<string> col2(coll.size(), "");
unique_copy(coll.cbegin(), coll.cend(), col2.begin());
for(const auto& ele : col2)
    cout<<" - "<<ele;
cout<<endl;
return 0;
}

输出 - - one - two - three - four - one -

我原以为: - - one - two - three - four - -

我缺少什么?

编辑:正如aswer-Damn所指出的,我错过了unique_copy本身的定义。

是否有任何函数可以执行我的expectecd(删除与邻接无关的唯一元素),除了将它们插入ordered set或在唯一副本之前排序,因为我想保留顺序。

1 个答案:

答案 0 :(得分:3)

std::unique_copy

  

将范围[first, last)中的元素复制到以d_first开头的另一个范围,使得连续相等的元素无法使用。

one在你的情况下并不连续。

尝试:

vector<string> coll{"one", "one", "two", "two", "three", "four"};

你会发现输出为

- one - two - three - four -  -