2014-09-21 96 views
-2
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."; 
    } 
} 

上述阵列由错误尝试使用max_element找出最多在一个阵列

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

给出当运行我的整个程序中,我得到一个错误说“的一元无效的类型参数时, ”。我查了一下,但无法理解“指针”或人们在指的是什么。

+3

也许读作['为的std ::一些文档max_element'(http://en.cppreference.com/w/cpp/algorithm/max_element) 。 – juanchopanza 2014-09-21 22:07:29

+0

如果您希望在'humanrock'中添加一个会改变'highesthuman [0]',那么它不会。 'higesthuman [3]'数组是三个整数值,它们与'humanrock','humanpaper'和'humancissors'完全不同。如果你准确地解释了'humanrock'等三重奏和'highesthuman [3]'阵列之间的关系,这可能会有很大的帮助。 – dgnuff 2014-09-21 22:14:00

回答

2

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

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

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

谢谢。为了澄清,因为它知道最高人类已经是一个数组,它知道从0开始,我必须把结束点?另外,我很好奇*。我还没有学到什么呢。 – 2014-09-21 22:12:03

+0

@MarkHubrig它只“知道”传递的参数类型(通过模板实例化)。你通过'最高人' - 这是范围的开始,'最高人2' - 这是范围的结束。 – 2014-09-21 22:14:05

+0

@MarkHubrig'+ 3'更精确 – 2014-09-21 22:19:49