Как распечатать ключ и значения из карты в виде списка в C ++ - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь распечатать более одной записи из карты, содержащей строку и класс указателя.Это продолжение этого поста: как разыменовать указатель карты указателей на объекты в c ++ .1. У меня возникают проблемы при переносе класса объекта обратно в вектор.2. Я хотел бы напечатать более одной записи с карты.

Я пытался использовать векторы, но не уверен, так ли это.Я получил некоторые ошибки от этого.Я знаю, что в Java вы можете использовать список массивов, поэтому пытаетесь обновить мой c ++.Любые хорошие примеры, которые у вас есть, следуют приведенному выше решению для ссылок.

class Employee
{
    public:
    int  employeeID;

    Employee()
    {
       employeeID = 123;
    } 
 };
int main(int argc, char* argv[]) {
  std::map<std::string, Employee *> *_employeePayroll;
  std::map<std::string, Employee *> _employeeID;
  std::map<std::string, Employee *>::const_iterator itEmployeeID;

  _employeePayroll = &_employeeID;
  (*_employeePayroll)["Karl"] = new Employee;
  (*_employeePayroll)["George"] = new Employee;

  vector<std::string> v1;
  v1.push_back(itEmployeeID->first);
  // Here I am having issues on pushing back an object class into a 
  // vector.  maybe as follows:
  v1..push_back(itEmployeeID->second);
  v1.shrink_to_fit();
  for ( auto it = v1.begin(); it != v1.end(): it++ )
  {
     std::cout << *it;
     std::cout << std::endl;
  }

  return 0;
}

Я хотел бы распечатать более одной записи из карты, содержащей строку и класс указателя.

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете сделать что-то вроде:

int main() {
    std::map<std::string, Employee> employee {
       {"Karl", Employee{42}},
       {"George", Employee{59}},
    };

    for (const auto& p : employee ) {
        std::cout << p.first << std::endl; // "Karl", "George"
        // p.second is Employee object.
    }
}

Демо

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