c ++忽略数组中的相同数字

RnD*_*RnD 0 c++ arrays loops for-loop

例如,我有一组随机数

6 5 4 4 8
Run Code Online (Sandbox Code Playgroud)

我需要对它进行排序并在之后打印时删除/忽略相同的数字,所以我做的是我对所有内容进行bubble sorth algorithm了排序并得到了类似的东西

4 4 5 6 8
Run Code Online (Sandbox Code Playgroud)

现在为了只打印不同的数字,我写了这个 for loop

for(int i=0;i<n;i++){
    if(mrst[i]!=mrst[i-1] && mrst[i]>0){
        outFile << mrst[i] << " ";
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我所拥有的数组是[0:12]的间隔,虽然我第一次调用它时,它检查数组索引为-1,看看之前是否有相同的数字,但它没有'确实存在,但存储在那里的值通常很大,因此有可能存储4,因此,第一个数字将不会被打印出来.如果是这样,如何防止它,重写代码,这将是最佳的?

awe*_*oon 7

也许,你正在寻找std::unique算法:

std::sort(mrst, mrst + n);
auto last = std::unique(mrst, mrst + n);

for(auto elem = mrst; elem != last; ++elem)
    outFile << *elem << " ";
Run Code Online (Sandbox Code Playgroud)