как ввести векторные данные структурного типа в элемент структурного вектора (вложенный структурный вектор) в c ++ - PullRequest
1 голос
/ 18 апреля 2019

Я новичок и внедряю симуляцию планирования.Я хочу вставить структурный вектор (Order) в структурный элемент вектора (selectedParts) в поддоне.

Я знаю, как вставить вектор типа int (fixtureTypes) в структуру Pallet, но я не знаю, как вставить вектор структурного типа (selectedParts) в Pallet.Я был бы признателен, если бы кто-нибудь дал мне знать, как это решить.

int main()
{
    std::vector<Pallet> pallets;
    int tmpFixtureType;
    for (int i = 0; i < 3; ++i)
    {
        Pallet pallet;
        pallet.palletNo = i;
        for (int j = 0; j < 3; ++j)
        {
            cin >> tmpFixtureType;
            pallet.fixtureTypes.push_back(tmpFixtureType);
        }
        pallets.push_back(pallet);  //end the "pallet.fixtureTypes.push_back" loop

   }

   for (int i = 0; i < 3; ++i)     //and then input the "selectedParts" in pallets
   {
       Order tmpOrder;
       tmpOrder.partNo = j;
       tmpOrder.partType = j;
       pallet.selectedParts.push_back(tmpOrder);
   }
   pallets.push_back(pallet);

}

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

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

  1. Следуйте стандартному соглашению об именах (я предпочитаю camelCase).Обязательно различайте типы и экземпляры.
  2. Сначала не беспокойтесь о резервировании пространства для векторных или движущихся объектов.

Обратите внимание, что я рефакторинг вашего кода (в основном переименованных переменных итипы)

#include <iostream>
#include <vector>

struct Order {
    int partNo;
    int dueDate;
    int partType;
    int pallet;
};

struct Pallet {
    int palletNo;
    std::vector<int> fixtureTypes;
    std::vector<Order> selectedParts;
};

int main()
{
    std::vector<Pallet> pallets;
    int tmpFixtureType;
    for (int i = 0; i < 3; ++i)
    {
        Pallet pallet;
        pallet.palletNo = i;
        Order tmpOrder;
        for (int j = 0; j < 3; ++j)
        {
            cin >> tmpFixtureType;
            pallet.fixtureTypes.push_back(tmpFixtureType);

            tmpOrder.partNo = j;
            tmpOrder.partType = j;
            pallet.selectedParts.push_back(tmpOrder);
        }

        pallets.push_back(pallet);
    }
}

Посмотрите, хотите ли вы этого.Вы можете пойти оттуда.

0 голосов
/ 18 апреля 2019

Ошибка, которую вы получаете, заключается в том, что имя pallet не имеет значения вне области действия (от { до }), где оно определено. У вас есть несколько Pallet экземпляров, вам нужно подумать о с каким вы имеете дело.

Переместить ваше население Order в область, где определен pallet, просто.

int main()
{
    std::vector<Pallet> pallets;
    for (int i = 0; i < 3; ++i)
    {
        Pallet pallet;
        pallet.palletNo = i;
        for (int j = 0; j < 3; ++j)
        {
            int tmpFixtureType;
            cin >> tmpFixtureType;
            pallet.fixtureTypes.push_back(tmpFixtureType);
        }

        for (int i = 0; i < 3; ++i)
        {
            Order tmpOrder;
            tmpOrder.partNo = j;
            tmpOrder.partType = j;
            pallet.selectedParts.push_back(tmpOrder);
        }
        pallets.push_back(pallet);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...