基本上我想要做的是删除向量中的一些指针,但我发现在向量中间执行它可能会很慢.
所以我有一个已经包含数据的向量:
std::vector<Class*> vec1; // This already contains pointers
我将遍历vec1并将一些指针添加到另一个向量(vec2): vec2.push_back(vec1.at(index))
现在我想做的就是这样,vec1 = vec2但我不知道这是否是更好(有效)的方式.
最好的方法是什么?
我试过了:
在循环浏览vec1时,只需删除我需要从中删除的内容:
it = vec1.erase(it)
循环通过vec1将最后一项移动到实际索引和poping_back
vec1.at(index) = vec1.back();
vec1.pop_back();
在循环浏览vec1而不是使用时,在指针指向的对象上设置一些属性 std::remove_if
vec1.erase(std::remove_if(vec1.begin(), vec1.end(), shouldBeRemoved), vec1.end());
现在我正在尝试生成一个新的向量,同时循环通过vec1并添加我想要保留的指针,然后"交换"或"移动"这个新向量的内容到vec1.
显然,当第四种方式,指针失效:(
我很乐意看到你们的建议我.非常感谢愿意帮助的每个人!
我一直在尝试从存储在Firestore数据库中的日期获取“时间之前”。
我已经尝试了两个可以做到这一点的软件包,但我无法使其与Firestore时间戳一起使用,老实说,我不敢相信获得此软件包的难度如此之大。
获得自身更新的“时间之前”的最简单方法是什么?
我设法从Firestore的时间戳中获取了完整的日期,而不是它的早期版本。