c++ - 从数字数组中删除重复项
问题描述
我正在尝试用 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++ 惯用的做法是使用 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
推荐阅读
- c++ - 从文件读取后显示缓冲区中的十六进制代码
- javascript - PostgreSQL 时间戳查询失败
- node.js - Object.values 不是函数错误
- firebase-hosting - Firebase 托管“发生意外错误”
- python - 从 0 开始创建新的 pandas 列
- c++ - C++ 多聊天服务器
- fingerprint - 如何使用样本比较两个指纹图像
- r - 动态调整 Shiny 中的绘图大小
- python - Python-->sklearn-->预处理-->LabelEncoder: Error
- rest - .Net Core 1.1 HttpClient 与 DI