gpt4 book ai didi

c++ - 使用模板的频率函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:44:49 25 4
gpt4 key购买 nike

我正在尝试编写一个基于模板的函数频率,它将返回项目数组中项目出现的次数。

到目前为止我有

#include <iostream>
using namespace std;

template <class T>
T frequency(T array[], T arraySize, T item) {

int count = 0;

for (int i = 0; i < arraySize; i++) {
if (array[i] == item) {
count++;
}
}

return count;

}

int main() {

// Testing template with int
int intArray[10] = { 1, 2, 3, 3, 14, 3, 2, 7, 99, 2 };
cout << "{ ";
for (int i = 0; i < 10; i++) {
cout << intArray[i] << " ";
}
cout << "}" << endl;
cout << "Frequency of 3: " << frequency(intArray, 10, 3) << endl;
cout << "Frequency of 2: " << frequency(intArray, 10, 2) << endl;
cout << "Frequency of 99: " << frequency(intArray, 10, 99) << endl;

// Testing template with double
double doubleArray[10] = { 1.5, 2.2, 99.4, 132.11, 1.5, 2.22, 1.515, 66.2, 51.8, 34.0 };
cout << "{ ";
for (int j = 0; j < 10; j++) {
cout << doubleArray[j] << " ";
}
cout << "}" << endl;
cout << "Frequency of 1.5: " << frequency(doubleArray, 10, 1.5) << endl;
cout << "Frequency of 2.2: " << frequency(doubleArray, 10, 2.2) << endl;
cout << "Frequency of 100.1: " << frequency(doubleArray, 10, 100.1) << endl;


return 0;
}

但是,当我尝试打印 double 的频率时,出现“没有匹配函数调用‘频率(double [10]、int、double)’”的错误。我不确定我做错了什么。

感谢您的帮助!

最佳答案

frequency 接受数组元素的参数和arraySize 相同类型,即T。但是你传递不同类型的参数,即 doubleint。然后类型推导失败,因为无法推导(确定)T

根据您的实现,类型arraySize 似乎是固定的,您可以将其声明为std::size_tint。返回类型也一样。它们的类型不会改变,因此不应使用模板参数声明。

template <class T>
int frequency(T array[], std::size_t arraySize, T item) {

int count = 0;

for (std::size_t i = 0; i < arraySize; i++) {
if (array[i] == item) {
count++;
}
}

return count;
}

关于c++ - 使用模板的频率函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41033118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com