【发布时间】:2016-03-03 20:24:24
【问题描述】:
我目前正在尝试使用结构的向量/双端队列。简单的结构示例...
struct job {
int id;
int time;
}
我希望能够在结构中搜索以找到与时间匹配的作业,将其从结构中删除并继续检查该结构中的其他 ID。示例代码...
<vector> jobs;
<deque> started;
for (unsigned int i = 0; i < jobs.size(); i++)
{
if (jobs.at(i).time == time)
{
started.push_back(jobs.at(i));
jobs.erase(jobs.begin() + i);
i--;
}
}
time++;
这可以按我的意愿工作,但它似乎也很笨拙,因为每当我删除时我都会调整索引,我认为这仅仅是因为我没有像应有的数据结构那样知识渊博。谁能给我一些建议?
注意 - 我不认为这与这篇文章的标签内容重复,因为我不想用我已经拥有的东西有效地做某事。对我来说,考虑到每次我从中得到我需要的东西时我都会减小双端队列的大小,这似乎足够有效。我所希望的,是一些关于找出什么是我正在尝试使用双端队列的最佳数据结构的建议,这在我处理它们时可能不会被处理。
我也可能是错的,我的用法很好,但对我来说似乎是这样。
【问题讨论】:
-
好的,谢谢乔恩!我去看看
-
嗨滴。我正在寻找一个更好的结构来处理我目前对双端队列所做的事情。我也不需要订单是什么,因为这些结构有我需要的订单信息。不过看起来不错,所以我会仔细阅读它
-
您可能想要查看具有固有排序的
std::multiset(尽管您需要告诉它jobs 是按job.time排序的)。擦除元素也应该很容易。
标签: c++ data-structures