0

我注意到当我有一个大小约为 2000 的向量时,std::unique 并没有按应有的方式运行。我尝试使用较小的向量进行唯一性,它按预期执行。我通过在两个向量中间添加大约 30 个重复条目来测试这一点。在较小的向量中,unique 将那些额外的 29 个条目放在向量的末尾,正如预期的那样。但是,在较大的向量中,只有一个重复条目存在。是否有可能我超出了一些限制?相同的代码用于大向量和小向量。

sort(dbaselista.begin(),dbaselista.end());
vector<string>::iterator lasta = unique(dbaselista.begin(),dbaselista.end());
//dbaselista.erase(lasta, dbaselista.end());

举个简单的例子,

小矢量:19AB 175D 12AC 19F7 19F7 19F7 19F7 209C 20AF

结果:12AC 175D 19AB 19F7 209C 20AF 19F7 19F7 19F7

如果我用更大的向量运行相同的代码,19F7 将只存在一次。

4

1 回答 1

6

唯一std::unique()承诺要做的是返回一个已删除重复项的范围。函数运行后,它返回的新结束迭代器之外的项目不需要是任何东西,因此它们可以是任何东西。

于 2013-10-24T16:04:33.787 回答