c++ - 在 C++ 中填充一维数组
问题描述
我有一个整数数组:
int listint[10] = {1,2,2,2,4,4,5,5,7,7,};
我想要做的是根据多重性创建另一个数组。所以我定义了另一个数组:
int multi[7]={0};
多数组 multi[0] 的第一个索引将告诉我们数组 listint 的重数为零。我们可以很容易地看到,数组 listint 中没有零,因此第一个成员是 0。第二个是 1 个香料,数组中只有 1 个成员。类似地,multi[2] 位置是 listint 中 2 的重数,即 3,因为 listint 中有三个 2。
我想用一个 for 循环来做这件事。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
unsigned int count;
int j;
int listint[10] = { 1,2,2,2,4,4,5,5,7,7, };
int multi[7] = { 0 };
for (int i = 0; i < 9; i++)
{
if (i == listint[i])
count++;
j = count;
multi[j] = 1;
}
cout << "multi hit \n" << multi[1] << endl;
return 0;
}
运行这段代码后,我想我会想要 listint 数组的每个元素的多重性。所以我尝试使用二维数组。
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
unsigned int count;
int i, j;
int listint[10] = { 1,2,2,2,4,4,5,5,7,7, };
int multi[7][10] = { 0 };
for (int i = 0; i < 9; i++)
{
if (i == listint[i])
count++;
j = count;
for (j = 0; j < count; j++) {
multi[j][i] = 1;
}
}
cout << "multi hit \n" << multi[4][i] << endl;
return 0;
}
第一个代码块是我想打印出多重性的东西。但后来我发现,我想在一个数组中表示每个元素的多重性。那么二维数组不是个好主意吗?我没有成功使用二维数组运行代码。
另一个问题。当我分配 j = count 时,我的意思是这就是多重性。所以如果count的值为2;我认为这是数组listint中任何元素的两个多重性。
解决方案
如果您只是想获取列表中每个元素的计数,则不需要二维数组。
#include <iostream>
int main() {
int listint[10] = { 1,2,2,2,4,4,5,5,7,7, };
int multi[8] = { 0 };
for (int i : listint)
++multi[i];
for (int i = 0; i < 8; ++i)
std::cout << i << ": " << multi[i] << '\n';
return 0;
}
使用标准集合还有一种更简单、更好的方法std::map
。值得注意的是,这不需要您事先知道数组中最大的元素是什么:
#include <map>
#include <iostream>
int main() {
int listint[10] = {1,2,2,2,4,4,5,5,7,7,};
std::map<int, int> multi;
for (int i : listint)
multi[i]++;
for (auto [k,v] : multi)
std::cout << k << ": " << v << '\n';
}
推荐阅读
- angular - Angular 组件公开 API(在库中)的正确/首选方式是什么?
- python - Pyspark:如果具有特定 id 的任何行包含 null,如何根据另一列派生新列的值?
- r - 不能 `filter()` 一个数字列,即使 `r` 说它是一个数字(`typeof()` 是“double”)
- arrays - 如何使用用户输入在 VBA 中创建过滤器/下拉菜单
- html - 通过 `srcdoc` 在 iframe 中渲染 HTML 时,我是否需要担心 XSS 风险?
- javascript - 如何将 Ajax 侦听器绑定到表行
- google-cloud-functions - 谷歌云功能的安全疑虑
- json - 如何使用 Azure Policy 在资源创建范围内强制执行指定的标记及其值
- python - 循环产品链接以抓取数据
- php - PHP 无效的身份验证(通用)