2012-04-14 3 views
0

Программа должна находит элемент в отсортированном массиве и реализовать эту функцию шаблон:алгоритм STL шаблонов функций

bool find(T *p, T value, int &index=null) 

Я закончил часть, но когда я пытаюсь сделать Null части все мое число идет к нулям. Также я не знаю, как реализовать индекс. Может кто-то мне помочь, пожалуйста.

int main() 
{ 
    vector<int> numbers; 
    vector<int>::iterator iter; 

    for (int x = 0; x < 15; x++) 
     numbers.push_back(x); 

    cout << "The numbers in the vector are:\n"; 
    for (iter = numbers.begin(); iter != numbers.end(); iter++) 
     cout << *iter << " "; 
    cout << endl << endl; 

    iter = find(numbers.begin(), numbers.end(), 5); 
    cout << *iter << endl; 
+9

У вас нет нулевой ссылки. Если вам нужно что-то подобное, используйте указатель. – Dani

+1

Ваш шаблон функции дает только указатель и не указывает, сколько элементов находится на этом адресе. Как это будет работать? – Blastfurnace

+1

Просто используйте встроенный алгоритм 'lower_bound()'. –

ответ

0

Прототип

bool find(T *p, T value, int &index=null). 

вызов функции является

iter = find(numbers.begin(), numbers.end(), 5); 

Концептуален, сделать этот матч? end() вернуть значение? Является ли 5 ​​индексом?

+0

Кроме того, вы не можете привязывать неконстантную ссылку к литералу. Я бы предположил, что 'find' здесь' std :: find', но, видимо, это не то, чего хочет OP. – Philipp

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