gpt4 book ai didi

c++ - 从 vector 中选择特定元素

转载 作者:IT老高 更新时间:2023-10-28 21:49:04 27 4
gpt4 key购买 nike

我有一个 vector v1 和一个相同大小的 bool vector v2。我想从 v1 中删除所有值,使得 v2 的并行元素为 false:

vector<int> v3; // assume v1 is vector<int>
for (size_t i=0; i<v1.size(); i++)
if (v2[i])
v3.push_back(v1[i]);
v1=v3;

有没有更好的方法?

  • 在 C++03 中
  • 在 C++11 中

最佳答案

size_t last = 0;
for (size_t i = 0; i < v1.size(); i++) {
if (v2[i]) {
v1[last++] = v1[i];
}
}
v1.erase(v1.begin() + last, v1.end());

本质上与您的相同,只是它可以就地工作,不需要额外的存储空间。这基本上是对 std::remove_if 的重新实现(这很难直接使用,因为它使用的函数对象被赋予了一个值,而不是容器中的索引或迭代器)。

关于c++ - 从 vector 中选择特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38374987/

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