我有一个充满结构的向量。该结构看起来像这样:
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
是最后一个vector
using 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
的迭代器获取迭代器,然后使用该迭代器调用。entry
LRU
vector.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] 删除。
我来说两句