以下是我正在做的项目的简要说明: 我目前将它设置为包含结构矢量的向量。它可以是包含结构队列的向量,如果这样可以更容易,因为元素将被卸载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
}