首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素在二维数组c++中的出现次数

元素在二维数组c++中的出现次数
EN

Stack Overflow用户
提问于 2020-06-02 00:32:44
回答 2查看 188关注 0票数 0

如果给我一个二维数组,比如{{1,2},{2,3,4},{5,1,2,7}},我该如何计算一个元素1在这个数组中出现了多少次?有没有针对这个的c++ STL函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-02 00:37:35

假设2d数组是嵌套的标准库容器,外部容器称为arr

代码语言:javascript
复制
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);
    }
);

(Demo)

这假设C++14支持auto lambda参数。

如果arr的类型是int**,那么这将不起作用,因为std::end()将不知道每个数组的结束位置,但是尝试手动迭代该数组的内部元素时会遇到完全相同的问题。

票数 0
EN

Stack Overflow用户

发布于 2020-06-02 00:57:55

如果这是一个“普通的”2D数组,其中数据存储在连续的内存中,那么如果您给它在内存中的开始和结束位置,那么std::count的使用就是所需的全部。

代码语言:javascript
复制
#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);
}

输出:

代码语言:javascript
复制
The number of 1's is 2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62136643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档