考虑这段简单的代码,它从一个
int
向量中移除小于或等于 6 的值。int main(void) {
std::vector<int> v{ 1,3,6,7,8,9 };
auto x = v.erase(std::remove_if(v.begin(), v.end(), [](auto x) {return x <= 6; }), v.end());
for (auto & value : v)
std::cout << value << "\n";
}
这段代码运行良好,但我想知道在不从向量的末尾删除剩余的“无效”元素的情况下使用std::remove_if
的用例是什么。
std::partition
。我认为,如果您使用std::remove_if
来不删除元素,则是在欺骗阅读代码的人。 - NathanOliverfilter_view
,在仍然能够使用基于范围的for循环的同时,零成本地移动/复制任何内容。 - NathanOliver