如何在C ++中将结构类型矢量数据输入到结构矢量成员(嵌套结构矢量)中

时间:2019-04-18 06:25:00

标签: c++ vector visual-studio-2017

我是初学者,正在实施调度模拟。 我想将结构矢量(Order)插入到托盘中的结构成员矢量(selectedParts)中。

我知道如何将int类型向量(fixtureTypes)插入到结构托盘中,但是我不知道如何将结构类型向量(selectedParts)插入到托盘中。 如果有人让我知道如何解决它,我将不胜感激。

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 个答案:

答案 0 :(得分:2)

不清楚您要做什么,最重要的是,代码甚至无法按现状编译。我会提供一些建议,也许这对您有用。

  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);
    }
}

查看这是否是您想要的。您可以从那里去。

答案 1 :(得分:0)

您得到的错误是,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);
    }
}