Невозможно получить возвращенный адрес вектора с правильным типом - PullRequest
0 голосов
/ 04 января 2019

Когда я практикуюсь с примером кода об адресе вектора возврата, который можно использовать в качестве параметра в другой функции в книге Essential C ++, у меня возникает проблема.

Код выглядит следующим образом:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

template <typename T>
inline T* begin(const vector<T> &vec){
    return vec.empty()?0:&vec[0];
}

int main(){
    vector<string> veca{ "pooh", "piglet", "eeyore", "tigger" };
    cout<<begin(veca)<<endl;
}

Функции begin () могут возвращать векторные адреса, которые должны быть напечатаны.

Но когда я запускаю его, получается: «ошибка: нет совпадения для оператора« << »(типы операндов:« std :: ostream {aka std :: basic_ostream} »и« std :: vector> :: » iterator {aka __gnu_cxx :: __ normal_iterator *, std :: vector>>} "

Функция шаблона begin () работает для других встроенных массивов, но имеет проблему с вектором. Может кто-нибудь сказать мне, как решить эту проблему, пожалуйста?

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