【问题标题】:Error when attempting to use max_element to figure out the highest number in an array尝试使用 max_element 计算数组中的最大数时出错
【发布时间】:2014-09-21 22:04:42
【问题描述】:
int a = max_element(highesthuman[0], highesthuman[2]); 
  if( win > loss)
  {
    cout << "You won " << (win-loss) << " games more than the computer did! You used " << a  << "     the most."; 
  }
}

上述数组由

给出
int humanrock = 0;
int humanpaper = 0;
int humanscissors = 0;
int highesthuman [3] = {humanrock, humanpaper, humanscissors};

运行我的整个程序时,我收到一条错误消息,提示“一元类型参数无效”。我查了一下,但无法理解“指针”或人们所指的内容。

【问题讨论】:

  • 如果您期望在humanrock 上加一会改变highesthuman[0],它不会。 higesthuman[3] 数组是三个整数值,它们与 humanrockhumanpaperhumanscissors 完全不同。如果您确切地解释了您想要的 humanrock 等三重奏和 highesthuman[3] 数组之间的关系,这可能会有很大帮助。

标签: c++ arrays int max


【解决方案1】:

std::max_element() 接受两个迭代器作为参数,并返回一个迭代器。在您的情况下,迭代器是指针。所以你应该改变

int a = max_element(highesthuman[0], highesthuman[2]); 

int a = *max_element(highesthuman, highesthuman + 3); 

【讨论】:

  • 谢谢。澄清一下,既然它知道最高人类已经是一个数组,它知道从 0 开始,我必须把结束点放在?另外,我对 *.我还没有了解它的作用。
  • @MarkHubrig 它只“知道”传递的参数类型(通过模板实例化)。你通过highesthuman - 它是范围的开始,highesthuman + 2 - 它是范围的结束。
  • @MarkHubrig + 3 更准确
  • @AntonSavin 你刚刚救了我的命!!
猜你喜欢
  • 2021-10-17
  • 2021-11-12
  • 1970-01-01
  • 2012-03-12
  • 2014-12-12
  • 2023-04-03
  • 1970-01-01
  • 2014-02-28
  • 2013-09-23
相关资源
最近更新 更多