我正在尝试计算网上相同元素的数量,我在网上找到了这个简单的解决方案,但我正在调整它,所以我自己理解它。 我试图计算数组中有多少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/
答案 0 :(得分:2)
您链接的示例是使用名为std::array
的{{1}}。
它需要一个类型和数量的元素,因此ca
需要6 std::array<int, 6>
s并且是一个固定长度的数组。
这有一个int
和begin
方法,可以很好地与stl中的算法配合使用。
如果你有一个C风格的数组,你可以使用end
和std::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;
}