2013-05-07 3 views
1

Я новичок в C++ и векторах и пытался поэкспериментировать с некоторыми функциями STL, и мне интересно, почему это не работает. Я предполагаю, что это из-за моей первой и последней позиций, разве им не разрешено быть ints?векторы и использование STL

#include <cstdlib> 
#include <vector> 
#include <iostream> 

using namespace std; 

/* 
* 
*/ 
int main() { 

    const int lowest = 10; 
    const int highest = 99; 

    vector<int> scramble; 
    for (int i = 0; i < 20; i++){ 
     scramble.push_back(lowest + rand() % (highest - lowest + 1)); 
     cout << scramble.at(i) << endl; 
    } 
    int first = 0; 
    int last = 19; 

    cout << "The maximum value is: " << max_element(first, last); 


} 
+0

Что такое "не работает"? – GManNickG

+1

'max_element (первый, последний);' Я предполагаю, что мне нужно использовать итераторы вместо ints или что-то еще? – user1719605

+0

Хе-хе, да. Как 'max_element' должен знать, что вам нужен максимум« скремблирования »вместо какого-либо другого вектора? –

ответ

8

max_element Согласно документации: std::max_element

std::max_element 
template <class ForwardIterator> 
ForwardIterator max_element (ForwardIterator first, ForwardIterator last); 

template <class ForwardIterator, class Compare> 
ForwardIterator max_element (ForwardIterator first, ForwardIterator last, 
          Compare comp); 

Первые два параметра должны быть , а не простые целые числа.

Вы можете попробовать следующее:

std::cout << "The maximum value is: " 
    << *max_element(scramble.begin(), scramble.end()); 
+0

@Blastfurnace Да, это хорошая точка зрения, которую я забыл. Обновлено сообщение. Спасибо! – taocp

Смежные вопросы