c++ - 用 uchar 数组屏蔽 C++ vector

标签 c++ stl

我有一个名为 mask 的 uchar 数组。它包含 0 或 1。

uchar mask

我有一个STL vector

vector<MyClass> vec

mask 和 vec 的大小相同。

从包含掩码为 1 的地方的原始内容的 vec 形成子 vector 的最佳方法是什么

最佳答案

vector<MyClass> vec2;
vec2.resize(vec.size());
for (int i = 0; i < vec.size(); ++i) {
    if (mask[i])
        vec2[i] = vec[i];
}

越简单越好。 vec2 将在掩码为 0 的位置包含类的默认构造对象,因此您需要一些方法来区分它们。

关于c++ - 用 uchar 数组屏蔽 C++ vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542440/

相关文章:

c++ - 比较使用不同分配器的 STL 字符串

c++ - 用 strncpy 替换 strcpy

c++ - 私有(private)虚拟方法的用途是什么?

c++ - 有没有办法在变量中存储类型说明符?

c++ - 对静态类成员的 undefined reference

c++ - 通过引用分配对象,无需复制

c++ - for_each 在 COM IEnumXxx 接口(interface)上?

c++ - 具有 STL 容器成员的模板类

c++ - 使用 STL 算法合并 2 个 vector

c++ - 如何绘制一个像素