【发布时间】:2015-12-29 09:38:01
【问题描述】:
我有两个对象向量。比如:
std::vector<thing> all_things;
std::vector<thing> bad_things;
我想获得包含 good_things 的第三个向量。换句话说,all_thing 中不属于 bad_things 的每个对象:
std::vector<thing> good_things=subtract(all_things,bad_things);
关于如何以最有效和最标准的方式实施减法的任何想法。
P.S 向量可以不 排序,因为类 thing 没有任何要排序的东西。 谢谢!
编辑:
我不想对all_things 进行任何更改。
例如
void substract(const std::vector<thing>& a, const std::vector<thing>& b);
【问题讨论】:
-
你的向量中的元素是独一无二的吗?
-
@PaoloM
std::set需要排序(OP 声明这是不可能的),因此如果元素是唯一的,他应该使用std::unordered_set -
thing是否有合适的operator==或等效项? -
我很难想象无法订购的东西。如果所有其他方法都失败,请使用
memcmp和std::sort,然后进行线性擦除。 -
那么为什么不按位图的 RGB 值对
thing进行排序呢?