gpt4 book ai didi

c++ - 使用 maps c++ 查找 vector 的多种模式

转载 作者:行者123 更新时间:2023-11-28 05:49:54 32 4
gpt4 key购买 nike

我正在尝试编写一个函数,它接受一个 vector ,然后使用映射计算 vector 中每个元素的频率。频率最高的那些被插入一个新的 vector ,然后我试图返回要在我的主函数中输出的 vector 。

vector<double> mode(vector<double> v)
{
sort(v.begin(),v.end());
vector<double> modes;
map<int,double> frequencyCount;
for(size_t i; i<v.size(); i++)
frequencyCount[v[i]]++;
double current_max = 0;
for (auto iter = frequencyCount.cbegin(); iter != frequencyCount.cend(); ++iter)
{
if (iter ->second > current_max)
{
modes.push_back(iter->first);
current_max = iter->second;
}
}
if (current_max == 1)
{
cout << "No mode exists." << endl;
}
else
return modes;
}

然后我在 main 中调用它:

int main()
{
vector<double> m = mode(v);
cout << "Mode: ";
for (size_t i; i<m.size(); i++)
cout << m[i];
}

没有错误,但没有任何输出...有什么建议吗?

最佳答案

for(size_t i; i<v.size(); i++)

您忘记将 i 初始化为 0。index 变量未初始化。未定义的行为。

此外,整体算法可以通过多种方式改进,但这不是这里所要求的。

关于c++ - 使用 maps c++ 查找 vector 的多种模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470659/

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