gpt4 book ai didi

c++ - 使用集合方法从未排序的数组中删除重复项

转载 作者:行者123 更新时间:2023-11-28 04:13:11 25 4
gpt4 key购买 nike

所以问题表明我必须输入一个包含重复元素的未排序元素数组,我决定使用排序。我是新手,我不明白这个错误

我正在尝试在 GFG 的 IDE 上运行它。

#include <iostream>
#include <bits/stdc++.h>

int main() {
//code
int n,size,a;
cin>>n;
while(n--)
{
cin>>size;
int a[size];
set<int> s;
for(int i=0;i<size;i++)
{
cin>>a;
s.insert(a);
}
for(int i=s.begin();i!=s.end();i++)
cout<<i<<" ";
return 0;
}

错误信息:

no match for 'operator>>' (operand types are 'std::istream {aka std::basic_istream<char>}' and 'int [size]')
cin>>a;

最佳答案

您显示的错误来源是此处的这一行:

int main() {
//...
int a[size];
// ...
}

a 现在是一个数组,它没有为 std::istream 重载 operator>>()

解决方法很简单,改一下这行:

cin>>a;

为此:

cin>>a[i];

现在,应该没有编译问题,尽管仍然存在大量不良做法,有几个答案和其他评论以及一个答案试图纠正这些问题。我会把它留给他们。

我唯一要警告你的是

int a;
some block {
int a[size];
}
// try to use a:
a[i]; // bad

在您的程序中有 2 个名为 a 的变量。一旦第二个 a 超出范围,它将破坏 a 的数组版本,并使用常规的 int a 代替。请注意这一点。

附言好吧,那么我再提一个其他人似乎没有提到的。

以下is ill formed ,因为它尝试使用可变长度数组:

cin>>size;
int a[size];

一些编译器会支持它,但从技术上讲,这是一个格式错误的程序。一般来说,不要这样做。

关于c++ - 使用集合方法从未排序的数组中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57235842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com