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

how to input structural type vector data into structural vector member (nested structural vector) in c++

本文关键字:向量 结构 嵌套 成员 输入 类型 C++ 数据      更新时间:2023-10-16

我是初学者,正在实施调度模拟。我想将结构向量(订单(插入到托盘中的结构构件向量(选定零件(中。

我知道如何将 int 类型矢量(夹具类型(插入结构托盘,

但我不知道如何将结构类型矢量(选定零件(插入托盘。如果有人告诉我如何解决它,我将不胜感激。

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

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

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

看看这是否是你想要的。你可以从那里开始。

您得到的错误是pallet作为名称在定义它的范围({ to }(之外没有意义。您有多个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);
    }
}