21xrx.com
2024-11-05 14:58:58 Tuesday
登录
文章检索 我的文章 写文章
C++如何统计数组中不同元素出现的次数?
2023-06-24 01:05:02 深夜i     --     --
C++ 数组 统计 不同元素出现次数

在C++编程中,统计数组中不同元素出现的次数是一项常见的任务。对于这个任务,需要使用一些技巧和算法才能高效地完成。下面是一些在C++中统计数组中不同元素出现次数的方法和技巧。

1. 使用std::map

使用C++标准库中的std::map可以有效地统计数组中不同元素的出现次数。std::map是一个关联容器,它将数据存储为key-value对,其中key是元素的值,而value是该元素在数组中出现的次数。使用std::map的代码如下:


#include <iostream>

#include <map>

int main()

{

  int arr[] = 3;

  std::map<int, int> counter;

  for (int i = 0; i < sizeof(arr) / sizeof(int); i++)

  {

    counter[arr[i]]++;

  }

  for (auto& i : counter)

  

    std::cout << i.first << " appears " << i.second << " times" << std::endl;

  

  return 0;

}

这段代码中,我们首先定义了一个int类型的数组arr和一个std::map 类型的counter。在循环遍历数组时,我们使用counter[arr[i]]++来统计数组元素出现的次数。最后,我们遍历std::map,并输出每个元素和对应的出现次数。

2. 使用std::unordered_map

使用C++标准库中std::unordered_map也可以实现同样的功能。std::unordered_map与std::map不同的是,它使用哈希表来存储数据,因此在统计大型数组的元素时,它可能更快些。使用std::unordered_map的代码如下:


#include <iostream>

#include <unordered_map>

int main()

{

  int arr[] = 1;

  std::unordered_map<int, int> counter;

  for (int i = 0; i < sizeof(arr) / sizeof(int); i++)

  {

    counter[arr[i]]++;

  }

  for (auto& i : counter)

  

    std::cout << i.first << " appears " << i.second << " times" << std::endl;

  

  return 0;

}

与std::map不同,我们使用了std::unordered_map 类型的counter。在遍历数组时,我们同样使用counter[arr[i]]++来统计元素的出现次数。最后,我们依然遍历std::unordered_map并输出每个元素和对应的出现次数。

在实际编程中,当我们需要统计数组中的不同元素出现次数时,使用std::map或std::unordered_map是一种简单且高效的方法。我们只需要在遍历数组时将元素加入容器,并递增对应元素的计数器即可。通过这种方法,我们可以将统计数组元素出现次数的任务简单化,同时也能够提高代码的执行速度。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复