gpt4 book ai didi

c++ - 我应该在这里使用 erase-remove 成语吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:10:04 24 4
gpt4 key购买 nike

我有一个 std::vector<IRenderable*> (下面代码中的 _pBkBuffer)。它包含许多不变的静态对象(位于 vector 的开头),后面跟着数量可变的动态对象。

// erase-remove, but leave the static renderables intact
_pBkBuffer->erase(
std::remove(
_pBkBuffer->begin() + _nStatics, _pBkBuffer->end(), ???
),
_pBkBuffer->end()
);

我可以在 ???为了删除-移除非静态可渲染对象?

我知道???应匹配指定子集中的所有对象。

我到底应该使用 erase-remove,还是应该使用其他方法?

最佳答案

'Should I be using erase-remove at all

显然你已经知道对象在哪里,所以没有。你这样做:

_pBkBuffer->erase( _pBkBuffer->begin() + _nStatics, _pBkBuffer->end() );

或者,甚至更好:

_pkBuffer->resize( _nStatics );

如果你让它们随机散布在 vector 中,将使用删除删除成语。 ??? 所缺少的是要与要删除的元素进行比较的值。由于要存储指针,因此很可能需要提供自定义谓词(函数指针、仿函数或 lambda)并使用 remove_if相反。

关于c++ - 我应该在这里使用 erase-remove 成语吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16301771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com