Поиск по карте и печать вектора - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть карта STL, которая отображает ключ к вектору результатов.Я хотел бы найти на карте определенный ключ и распечатать все результаты.Я пытаюсь перебрать вектор и вызвать print для каждого элемента.

typedef std::vector<Deliverables>      MyDeliverables;
typedef std::map<int, MyDeliverables> MyMap;

MyMap map1;

template < class T >

void printVector( const vector <T> &v)
{
    for (auto p = v.begin(); p != v.end(); ++p)
        *p->print();
}


int main()
{   
Deliverables del("Name", 12, 12, 2018);

map1.insert(MyMap::value_type(1, MyDeliverables()));

auto search = map1.find(1);
if (search != map1.end()) {
    std::cout << "Found Student ID: " << search->first << '\n';
    printVector(search->second);
}
else {
    std::cout << "Not found\n";
}
}

Ошибка C2662 'void Deliverables :: print (void)': невозможно преобразовать этот указатель из const Deliverables'to' Deliverables & '
Строка: * p-> print ();

Как правильно распечатать результаты?

1 Ответ

0 голосов
/ 02 декабря 2018

Проблема с кодом, который вы не показываете:

Deliverables::print()

Это не const, поэтому вы не можете его использовать.Объявите функцию печати как const, и тогда вы можете использовать const Deliverables&:

Deliverables::print() const

. Затем измените цикл, чтобы избежать путаницы в отношении разыменования и количества раз:

for(const auto& p: v)
    p.print();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...