21xrx.com
2024-11-05 18:48:07 Tuesday
登录
文章检索 我的文章 写文章
如何在C++中删除重复数并保持原始顺序的数组?
2023-07-12 07:15:47 深夜i     --     --
C++ 删除重复数 原始顺序 数组

在C++中,我们经常需要操作数组。有时,我们需要删除数组中的重复数,并且要保持原始数组的顺序。这是一种常见的问题,解决它需要一些技巧和算法。在这篇文章中,我将介绍如何在C++中删除重复数并保持原始顺序的数组。

第一种方法是使用std::set容器。std::set是一个定义在头文件 中的C++标准库容器,它可以自动忽略重复元素并且保持元素的插入顺序不变。因此,我们可以遍历原始数组并将元素插入std::set中,这样就可以保证数组中的元素不重复。最后,我们可以将std::set中的元素插入到一个新的数组中,并删除原始数组。以下是使用std::set删除重复数的示例代码:


#include <iostream>

#include <set>

#include <vector>

int main() {

  int arr[] = 1;

  int size = sizeof(arr) / sizeof(arr[0]);

  std::set<int> s;

  for(int i = 0; i < size; i++) {

    s.insert(arr[i]);

  }

  std::vector<int> v(s.begin(), s.end());

  for(int i = 0; i < v.size(); i++) {

    std::cout << v[i] << " ";

  }

  std::cout << std::endl;

  return 0;

}

另一种方法是使用std::vector容器和std::find函数。我们可以遍历原始数组,检查一个元素是否已经在新的数组中出现过,如果没有,我们就将其推入新的数组中。这种方法较std::set容器更快,但也需要额外的内存空间来存储新的数组。以下是使用std::vector和std::find函数删除重复数的示例代码:


#include <iostream>

#include <vector>

#include <algorithm>

int main() {

  int arr[] = 1;

  int size = sizeof(arr) / sizeof(arr[0]);

  std::vector<int> v;

  for(int i = 0; i < size; i++) {

    if(std::find(v.begin(), v.end(), arr[i]) == v.end()) {

      v.push_back(arr[i]);

    }

  }

  for(int i = 0; i < v.size(); i++) {

    std::cout << v[i] << " ";

  }

  std::cout << std::endl;

  return 0;

}

在使用std::vector和std::find函数的方法中,我们重复使用了长度为1的std::vector作为查找数组,找到已经在新数组中出现的元素。如果element找到了所有元素,则此步骤的使用,否则将其添加到新数组中。

以上是在C++中删除重复数并保持原始顺序的两种方法。无论哪种方法,都可以在C++中很容易地实现一个非常有用的功能。根据不同的需求,您可以选择最适合您的解决方案。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章