如何在数组c ++中计算相同的值

时间:2016-11-10 15:45:46

标签: c++

我正在尝试计算网上相同元素的数量,我在网上找到了这个简单的解决方案,但我正在调整它,所以我自己理解它。 我试图计算数组中有多少40个。这是2。

#include <iostream>
#include <algorithm>
#include<array>
using namespace std;

int main(){
    int array[6] = {38,38,40,38,40,37};
    cout<<count(ca.begin(),ca.end(),40);
    return 0;
}

错误是无法识别ca,这是我发现的有助于计算此代码的代码。 http://www.cplusplus.com/forum/general/154188/

3 个答案:

答案 0 :(得分:2)

您链接的示例是使用名为std::array的{​​{1}}。 它需要一个类型和数量的元素,因此ca需要6 std::array<int, 6> s并且是一个固定长度的数组。

这有一个intbegin方法,可以很好地与stl中的算法配合使用。

如果你有一个C风格的数组,你可以使用endstd::begin来实现同样的目标。

std::end

答案 1 :(得分:0)

数组不是类,也没有成员函数。而且你有一个错字。我想你的意思是

int ca[6] = {38,38,40,38,40,37};
cout<<count(ca.begin(),ca.end(),40);

写如

cout << count( ca, ca + sizeof( ca ) / sizeof( *ca ), 40 );

或包含标题<iterator>

#include <iterator>

并写

cout << count( begin( ca ), end( ca), 40 );

另一方面,如果您将使用class std :: array而不是您的数组,那么您可以编写

array<int, 6> ca = {38,38,40,38,40,37};
cout<<count(ca.begin(),ca.end(),40);

这是我的示范程序

#include <iostream>
#include <array>
#include <algorithm>
#include <iterator>

int main() 
{
    int a1[6] = { 38, 38, 40, 38, 40, 37 };

    std::cout << std::count( std::begin( a1 ), std::end( a1 ), 40 ) << std::endl;

    std::array<int, 6> a2 = { 38, 38, 40, 38, 40, 37 };

    std::cout << std::count( a2.begin(), a2.end(), 40 ) << std::endl;

    return 0;
}

答案 2 :(得分:0)

当然ca无法识别,你忘了初始化它:)

count函数需要接收您想要计算的范围的开头和结尾。在您的情况下,数组从array开始,到array+5结束,但它是严格的比较,因此您必须通过array+6

main成为:

int main(){
    int myArray[] = {38,38,40,38,40,37};

    cout << count(myArray, myArray+6 40);
    return 0;
}