首页 > 解决方案 > 从数字数组中删除重复项

问题描述

我正在尝试用 C++ 编写一个程序,在其中输入一系列数字a[],然后输出数字以b[]删除任何重复项。例如a[] = {1,3,7,6,3,7}将输出b[] = {1,3,7,6}. 谢谢!

int main() {
  int a[10];

  int i, n, j;

  cout << "n=";

  cin >> n;

  for (i = 0; i <= n - 1; i++) {
    cout << "a[" << i << "]=";

    cin >> a[i];
  }

  for (i = 0; i < n; i++)

  {
    for (j = i + 1; j < n; j++)

    {
      if (a[i] == a[j]) {
        cout << "b= " << a[i] << endl;
      }
    }
  }
  for (i = 0; i <= n; i++) {
    if (a[i] != a[j]) {
      cout << "b=" << a[i] << endl;
    }
  }
}

标签: c++

解决方案


如果您想消除重复项(并保留顺序),那么 C++ 惯用的做法是使用 std::set 和 std::vector (此处仅显示您示例的相关片段):

int a[] = {1,3,7,6,3,7};
std::set<int> c;
std::vector<int> b;

for(auto v: a)
 if(c.insert(v).second)
  b.push_back(v);

for(auto v: b)
 std::cout << v << std::endl; 

输出:

1
3
7
6

推荐阅读