c++ - 如何获取 vector 的那些元素,其中另一个 vector 在相应索引处具有 '1' s

标签 c++ stl vector indices

我有两个 vector

std::vector<int>   markedToBeRead(7);   // contains: 1,1,0,0,1,0,1
std::vector<float> myVec(7);            // contains: 1,2,3,4,5,6,7

从 myVec 中获取这些元素的最佳方法是什么,其中 markedToBeRead 的相应索引的值为 1
如果不使用 for 循环,但使用 STL 方法,这是否可能?

std::vector<float> myResult;            // contains: 1,2,5,7

谢谢!

最佳答案

很明显,这里更喜欢简单的 for 循环,而不是任何 STL 算法。

但作为概念的证明,人们可能会在此处采用 C++11 中的 STL::equals 和 lambda:

std::equal(myVec.begin(), myVec.end(), markedToBeRead.begin(), [&](float item, int mark)->bool {
    if (mark)
        myResult.push_back(item);
    return true;
});

这可行,但看起来很丑。

关于c++ - 如何获取 vector 的那些元素,其中另一个 vector 在相应索引处具有 '1' s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098517/

相关文章:

c++ - MPI 中 vector 的使用(C++)

r - 查找字符串列表的每个元素与 R 中向量的每个字符串之间的匹配(避免 'for' )

c++ - 如何将元素移动到 vector 的末尾?

c++ - 派生类如何使用虚拟基类的实例?

c++ - STL 或 BOOST 是否提供任何干净的方法来获取排序顺序而无需重新排序原始序列?

c++ - 将派生类转换为基类时 dynamic_cast 失败

c++ - 优化 C++ 二维数组

c++ - 如何为采用 STL 容器迭代器的函数提供函数签名?

c++ - 使用快速排序排序不会给出排序数组

c++ - "no matching function for call to : "编译错误