元素在二维数组 c++ 中的出现次数
Number of occurrences of an element in a 2d-array c++
如果我得到一个 2d 数组说{{1,2},{2,3,4},{5,1,2,7}}
,我如何计算一个元素说1
在数组中出现了多少次? 是否有任何 c++ STL 函数?
假设二维数组是嵌套的标准库容器,外部容器称为arr
:
auto target = 1;
auto count = std::accumulate(
std::begin(arr), std::end(arr), 0,
[target](auto a, auto const &inner) {
return a + std::count(std::begin(inner), std::end(inner), target);
}
);
(演示(
这假设 C++14 支持auto
lambda 参数。
如果arr
的类型是int**
那么这将不起作用,因为std::end()
不知道每个数组的结束位置,但是尝试手动迭代该数组的内部元素时会遇到完全相同的问题。
如果这是一个"普通"的 2D 数组,其中数据存储在连续内存中,那么如果您为它在内存中提供开始和结束位置,则只需要使用 std::count。
#include <algorithm>
#include <iostream>
//...
int main()
{
const int m=10;
const int n=20;
int arr[m][n] = {0};
arr[0][0] = 1;
arr[m-1][n-1] = 1;
std::cout << "The number of 1's is " << std::count(&arr[0][0], &arr[m-1][n], 1);
}
输出:
The number of 1's is 2
相关文章:
- 将值从二维数组输出到文本文件
- 在二维数组中查找最小值和最大值?
- 移动二维数组中的字符
- 如何正确填充在堆上分配的二维数组?
- 传递二维数组时出现问题
- 具有随机数的二维数组不会更改
- 如何在C++中获取二维数组中最少的一列数?
- 如何使用用户输入变量制作二维数组?
- C++ 中动态二维数组的访问冲突
- 遍历二维数组的所有子数组
- 将二维数组的所有元素插入到一维数组中
- 在函数中传递二维数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 创建 std::string 的二维数组的最佳做法
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 元素在二维数组 c++ 中的出现次数
- 执行 c++ 二维数组
- C++ 中的二维数组初始化为一个值
- 在C++中初始化第一维大小未知的二维数组
- 如何在二维数组中存储值?