📌  相关文章
📜  使用C ++中的STL从未排序的数组中删除重复项

📅  最后修改于: 2021-05-31 22:49:12             🧑  作者: Mango

给定一个未排序的数组,任务是使用C++中的STL从数组中删除重复的元素

例子:

Input: arr[] = {1, 2, 5, 1, 7, 2, 4, 2}
Output: arr[] = {1, 2, 4, 5, 7}

Input: arr[] = {1, 2, 4, 3, 5, 4, 4, 2, 5}
Output: arr[] = {1, 2, 3, 4, 5}

方法:
可以使用STL中提供的unique()函数删除数组的重复项。

下面是上述方法的实现。

#include 
using namespace std;
  
// Function to remove duplicate elements
void remDup(int arr[], int n)
{
  
    // Initialise a vector
    // to store the array values
    // and an iterator
    // to traverse this vector
    vector v(arr, arr + n);
    vector::iterator it;
  
    // sorting vector
    sort(v.begin(), v.end());
  
    // using unique() method
    // to remove duplicates
    it = unique(v.begin(), v.end());
  
    // resize the new vector
    v.resize(distance(v.begin(), it));
  
    // Print the array with duplicates removed
    cout << "\nAfter removing duplicates:\n";
    for (it = v.begin(); it != v.end(); ++it)
        cout << *it << " ";
    cout << '\n';
}
  
// Driver code
int main()
{
    int arr[] = { 1, 2, 5, 1, 7, 2, 4, 2 };
  
    int n = sizeof(arr) / sizeof(arr[0]);
  
    // Print array
    cout << "\nBefore removing duplicates:\n";
    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";
  
    // call remDup()
    remDup(arr, n);
  
    return 0;
}
输出:
Before removing duplicates:
1 2 5 1 7 2 4 2 
After removing duplicates:
1 2 4 5 7
想要从精选的最佳视频中学习并解决问题,请查看有关从基础到高级C++的C++基础课程以及有关语言和STL的C++ STL课程。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”