Написать функцию, которая печатает каждый элемент вектора STL, несмотря на тип - PullRequest
0 голосов
/ 06 сентября 2010

Я пытался использовать этот фрагмент кода, но он не работал

template <class T>
void display(vector<T> vec)
{
  vector<T>::iterator MyIter;
  for(MyIter=vec.begin();MyIter!=vec.end();MyIter++)
    cout<<*MyIter<<" ";
  cout<<endl;
}

Я имею в виду, если есть способ избежать создания функции для каждого типа T (int, char, string).Я использую только встроенные типы для T.

Это сообщение об ошибке при компиляции программы

10 C:\Documents and Settings\ASPIRE\Desktop\perms.cpp expected `;' before "MyIter" 

Ответы [ 2 ]

2 голосов
/ 07 сентября 2010

Вы пропустили typename перед определением переменной MyIter, т.е. оно должно быть typename vector<T>::iterator MyIter;

0 голосов
/ 06 сентября 2010

Можете ли вы быть более понятным о том, как этот код не работал?

Он основан на существовании оператора T :: operator << - если он отсутствует для любого экземпляра типа / класса T, который вы используете в своем коде, код не будет компилироваться. Для встроенных типов этот код будет работать нормально. Если вы используете это для вектора ваших собственных типов, то вам придется реализовать оператор << для каждого, чтобы это работало. </p>

кстати используйте ++MyIter, это более эффективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...