c++ - 用于查找给出分割错误的数组中最大元素的出现次数的代码
问题描述
我正在用 C++ 编写一个函数,它将向量数组作为参数,然后找到其中最大值的出现次数。我已经编写了函数生日蛋糕蜡烛和主要函数如下。
#include <iostream>
using namespace std;
int birthdaycakecandles(vector<int> a)
{
int largest=a[0];
int pos;
for(int i=1;i<a.size();++i)
{
if(largest<a[i])
{
largest=a[i];
pos=i;
}
}
int count=1;
for(int i=0;i<a.size();++i)
{
if(a[i]==largest&&i!=pos)
count++;
}
return count;
}
int main()
{
double n;
cin>>n;
vector<int> a;
for(double i=0;i<n;++i)
cin>>a[i];
int val=birthdaycakecandles(a);
cout<<val;
return 0;
}
请查看代码并建议我错误的原因。编译器给我分段错误。谢谢。
解决方案
给定代码
vector<int> a;
for(double i=0;i<n;++i)
cin>>a[i];
a
是空的; 访问不存在的元素a[i]
会导致 UB,一切皆有可能。
您可以从头开始初始化a
包含的n
元素。
size_t n;
cin>>n;
vector<int> a(n);
for(size_t i=0;i<n;++i)
cin>>a[i];
或用于push_back
将元素插入a
.
size_t n;
cin>>n;
vector<int> a;
for(size_t i=0;i<n;++i) {
int x;
cin>>x;
a.push_back(x);
}
PS:double
用作索引vector
似乎没有意义。
推荐阅读
- javascript - 将值重新分配给使用解构创建的变量的正确方法?(数组解构)
- docker - 有没有办法通过 SSH 与在 docker 容器内运行的远程进程建立 JMX 连接?
- c++ - C++17:仍然使用枚举作为常量?
- reactjs - 在 React 项目中使用 JS 和 TS
- node.js - How to register a user in a hypaerledger fabric network using node sdk?
- fortran - MPI_TYPE_CREATE_STRUCT:无效的数据类型
- rest - WCF Rest Service 不带参数“#”
- deep-learning - 仅预测边界框
- mysql - mysql 5.7 如何将json数组提取到多列?
- python - Is there a way to reference the dataframe subset being changed with pandas?