数组中值的 C++ 实例? (直方图)

标签 c++ arrays

我想知道是否可以在 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”函数只根据给定的数字返回一个带有指定数量的“*”的字符串。

我知道最后一点不正确,但这就是我要解决的问题。

最佳答案

有两种简单的方法:

  1. 排序+计数
    1. 对数组进行排序
    2. 遍历所有元素,并在遇到不同元素/结尾时打印摘要。
  2. unordered_map
    1. 创建 std::unordered_map<int,int>
    2. 遍历数组,在遇到每个遇到的元素时增加计数。
    3. 打印摘要。

大小为 2 的数组** sizeof(int)*CHAR_BIT大得令人望而却步。

关于数组中值的 C++ 实例? (直方图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399839/

相关文章:

c++ - 尝试使用 Cygwin b20 在 Windows 上编译 C 程序时出错

php - 如何计算 PHP 中的 MySQL 数组值?

javascript - 找出能被 3 整除的 3 个数的最大和

javascript - 在字符串数组中连接多个数组

c++ - 什么是复制省略和返回值优化?

c++ - 如何使用堆栈跟踪来确定崩溃原因?

c++ - STDLIB 中容器元素类型的要求是什么?

c++ - C++中的简单继承

javascript - 如何在javascript中显示图像数组中的上一张图像

c - 无法在 C 中打印数组值