删除结构向量中某处的项目

莱奥妮

我有一个充满结构的向量。该结构看起来像这样:

struct entry{
    int something
    int something2;
    int LRU; // least recently used
};

我要做的是首先在具有最低 LRU 的向量中找到结构。并尝试这样做:

least = vector[0].LRU; 
for (entry &e : vector ) {
    if (e.LRU < least)
    least = e.LRU; 
}

这是可行的吗?我现在如何删除 TLB 中的正确结构?

提前致谢!

泰德·林格莫

一种方法是确保最低的元素LRU是最后一个vectorusing std::nth_element然后,您可以resize() vector摆脱最后一个元素。

例子:

if(not vector.empty()) {
    std::nth_element(vector.begin(), std::prev(vector.end()), vector.end(),
        [](auto&& lhs, auto&& rhs) {
            return rhs.LRU < lhs.LRU;
        });
    vector.resize(vector.size() - 1);
}

另一种方法是使用最低std::min_element的迭代器获取迭代器,然后使用该迭代器调用。entryLRUvector.erase()

if(not vector.empty()) {
    auto it = std::min_element(vector.begin(), vector.end(),
        [](auto&& lhs, auto&& rhs) {
            return lhs.LRU < rhs.LRU;
        });
    vector.erase(it);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章