2016-01-21 5 views
0

Я хочу напечатать элементы вектора. Ниже приведен мой код.Доступ к векторным элементам при передаче с использованием шаблона

This is my code

После поиска я нашел следующий код и его работы:

for(int i=0;i<vec.size();i++) 
    cout<<vec[i]<<" "; 

Но мы не можем использовать итераторы для доступа к элементам? если возможно, как?

+1

вместо связывания с (внешним) изображения, пожалуйста, укажите код в ваш вопрос. –

+1

Ошибка сообщает вам, что вам нужно сделать, чтобы исправить это. Вы также можете просто использовать [диапазон для цикла] (http://en.cppreference.com/w/cpp/language/range-for) – NathanOliver

+0

hackerrank - не лучшее место для изучения C++ –

ответ

0

Вы можете просто сделать auto it = vec.begin() в случае, если вы используете C++ 11, поэтому вам действительно не нужно беспокоиться о типе it.

+1

В C++ 11, просто используйте ranged для: ('for (const auto & e: a)') – Jarod42

3

typename отсутствует:

template <typename T> 
void printArray(const std::vector<T>& a) 
{ 
    for (typename std::vector<T>::const_iterator it = a.begin(); it != a.end(); ++it) { 
     // ... 
    } 
} 

В C++ 11, вы можете просто написал:

template <typename T> 
void printArray(const std::vector<T>& a) 
{ 
    for (const auto& e : a) { 
     std::cout << e << std::endl;; 
    } 
} 
+1

Возможно, было бы полезно указать, почему typename необходимо. Не сказать, что вам нужно, поскольку компилятор сказал ему, почему уже. – NathanOliver

+0

О, если он закрыл, это сработает. Я все время забываю об этом. – NathanOliver

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