c ++ структура вектора структуры - PullRequest
0 голосов
/ 04 мая 2020

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

struct Vehicle{
    string LicensePlate;
    string VehicleType;
    vector<string> DamageType;
    int EstFixDays;
}veh;

struct DailyCustomers{
    string date;
    struct Vehicle vehicleList;
}dlc;

int main(){
  vector<Vehicle> vehicleList;
  struct DailyCustomers dlc;
  dlc.date = fileVector[1];
  for (int i = 1; i < fileVector.size(); i++){
      stringDevide(fileVector[i]);
      struct Vehicle veh;
      veh.LicensePlate = licensePlate;
      veh.VehicleType = vehicleType;
      veh.DamageType = vehicleDamageType;  
      veh.EstFixDays = est; 
      vehicleList.push_back(veh);
  }
  dlc.vehicleList = veh;
}

Моя программа, похоже, работает нормально, поскольку связывание структур не влияет на нее, но я не уверен, правильно ли я связал их вместе. Должна ли последняя строка быть внутри for l oop?

Любая помощь приветствуется. Спасибо.

1 Ответ

2 голосов
/ 04 мая 2020

Вы не создали структуру, содержащую вектор структур. Все, что вы сделали, это создали структуру, которая содержит структуру. У вас есть вектор структур, но он находится в основном, а не в какой-либо структуре.

У вас также есть разные другие проблемы, глобальные переменные, которые вы не используете, и ненужные struct используемые.

Вот как это сделать

struct Vehicle {
    string LicensePlate;
    string VehicleType;
    vector<string> DamageType;
    int EstFixDays;
};

struct DailyCustomers {
    string date;
    vector<Vehicle> vehicleList; // a vector of structs inside a struct
};

int main() {
    DailyCustomers dlc;
    dlc.date = fileVector[1];
    for (int i = 1; i < fileVector.size(); i++) {
        stringDevide(fileVector[i]);
        Vehicle veh;
        veh.LicensePlate = licensePlate;
        veh.VehicleType = vehicleType;
        veh.DamageType = vehicleDamageType;  
        veh.EstFixDays = est; 
        dlc.vehicleList.push_back(veh);
    }
}
...