当动态分配两个向量时,如何向向量内的向量添加元素?

时间:2017-11-11 03:27:58

标签: c++ c++11 vector struct queue

以下是我正在做的项目的简要说明: 我目前将它设置为包含结构矢量的向量。它可以是包含结构队列的向量,如果这样可以更容易,因为元素将被卸载FIFO。 我只需要按照包含最多结构的矢量/队列的顺序对主矢量进行排序。

这是我的代码:

 MetaV.push_back(vector<sData>()); //create vector inside vector

 //load data into structs

 metaV.back().push_back(item); //push struct onto the vector inside the vector

 //loop struct portion until process changes, then loop to top

MetaV声明为:

 std::vector<std::vector<sData>>metaV;

sData是结构并且是一个对象?该结构声明为:

 sData item;

稍后在代码中我可以访问metaV中struct中的所有元素,但是不是(在文件的实例中)3个向量,其中包含14个结构,MetaV只包含17个项目。

所以我的问题是,如何将结构添加到向量内的动态制作向量中? 我的代码在哪里错了? 我认为back()添加到最后一个元素,但我想它会添加到它的背面,而不是它的内部?

我尝试尽可能少地编写代码,因为我知道我的错误是在这两行中。如果需要,我可以提供更多。

由于

编辑:这是代码片段,如果这使它更完整和可验证。

 item.ident = mcode;
    item.desc = mdesc;
    item.cycle = mcyc;
    item.ncycle = newCycle;
    item.tasks = codeDesc;
    item.taskEnd = codeEnd;
    item.procNum = numProcess;

    metaV.push_back(vector<sData>());

    //if new process, store and reset counts
    if (n != numProcess)
    {
        //create new vector in metaV and push onto it
       metaV.push_back(vector<sData>());
       metaV.back().push_back(item);

        if(sched_code == "PS")
        {
            taskTot = io_count;
            io_count = 0; //reset count for next process
        }

        else if(sched_code == "SJF")
        {
            taskTot = io_count + taskNum;
            io_count = 0; 
            taskNum = 0; //reset counts
        }

        else if (sched_code == "FIFO")
        {
            //do nothing
        }

        else
        {
            cout << "Scheduling Code Error: " << sched_code << endl;
        }

        countz.proNum = n;
        countz.taskNum = taskTot;

        //push onto vector to be sorted
        procSort.push_back(countz);

        n = numProcess;
    }

    else //if n == numProcess
    {

        metaV.back().push_back(item); //push struct into vector, in vector metaV

    }

0 个答案:

没有答案