【发布时间】:2019-02-27 18:15:35
【问题描述】:
我有两个向量
std::vector<Mat> images;
std::vector<std::string> image_paths;
并希望过滤掉图像为空的两个向量中的索引。这可以在单个向量上轻松完成:
std::remove_if(images.begin() images.end(), [](const Mat& img) { return img.empty(); });
但现在我也想删除 image_paths 上的相同索引。这当然可以推广到任意类型或任意谓词的向量。我怎样才能最优雅地做到这一点?
【问题讨论】:
-
您可以创建一个包含两个元素的结构,
Mat和string(以及您需要保持在一起的任何其他字段),并拥有这些结构的向量;而不是试图让两个独立的向量保持同步。 -
我已经考虑过了,但是对于大多数进一步的处理,我需要单独访问任一向量并且不想紧密耦合两个字段。在这种情况下,它让我的生活更轻松,但我必须更改所有其他接口以获取耦合数据向量或编写代码来提取奇异分量向量,这似乎也有点不切实际和低效。