我想知道是否可以在 C++ 中解析数组并检索整数在数组中出现的次数。我正在尝试制作值的直方图,但目前对如何继续感到困惑。
如果重要的话,它是一个一维数组,我正在使用这个函数来打印数组:
void print(int a[], int n)
{
int j = 1;
cout << endl;
for(int i=0; i < n; i++)
{
if(!(j%6))
{
j=1; cout << endl << endl;
}
cout << right << setw(2) << a[i] << " ";
++j;
}
}
在这张截图中给出了正确的输出:
http://i.imgur.com/P8Jzj1V.png
但是,一旦我转到我的直方图函数(我知道它编码不正确),我就会得到以下输出:
http://i.imgur.com/WJtBjoF.png
因为我当前的代码是根据从数组中获取的值打印星号:
for (int i = 0; i < size; i++)
{
cout << a[i] << ":" << bar(a[i-1]);
cout << endl;
}
附言- “bar”函数只根据给定的数字返回一个带有指定数量的“*”的字符串。
我知道最后一点不正确,但这就是我要解决的问题。
最佳答案
有两种简单的方法:
- 排序+计数
- 对数组进行排序
- 遍历所有元素,并在遇到不同元素/结尾时打印摘要。
- unordered_map
- 创建
std::unordered_map<int,int>
- 遍历数组,在遇到每个遇到的元素时增加计数。
- 打印摘要。
- 创建
大小为 2 的数组** sizeof(int)*CHAR_BIT
大得令人望而却步。
关于数组中值的 C++ 实例? (直方图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399839/