从向量中擦除元素是否也会擦除元素中存在的所有成员向量

Does erasing elements from a vector also erase all the member vectors present in the elements?

本文关键字:元素 擦除 向量 成员 是否 存在      更新时间:2023-10-16

我正在使用eraseremove_if有条件地从对象(AnObject s(的向量实例(AVector(中删除元素。

在我的方案中,AnObject有一个Anothervector(Anotherobject s(作为其成员变量之一。我想删除任何大小为 0 Anothervector对象。注意:BVectorAnObject s的另一个向量。 condition_1是一个谓词。

// Copy elements from BVector to AVector based on a condition
    for (int i = 0; i < BVector.size(); i++)
            {
                AnObject temp;
                AVector.push_back(temp);
                std::copy_if(BVector.at(i).getVector().begin(), BVector.at(i).getVector().end(), back_inserter(AVector.at(i).getVector()), condition_1);
            }
// Trim the AVector by removing AnObjects with Anothervector of size 0
auto const cond_trim = [](AnObject& anobj)
{
    // std::cout << "Size is " << anobj.getVector().size();
    return anobj.getVector().size() == 0;
};
std::vector<Anotherobject>& AnObject::getVector()
{
    return Anothervector;
}
auto iter = std::remove_if(AVector.begin(), AVector.end(), cond_trim);
AVector.erase(iter, AVector.end());

更新发现错误 - 擦除AVector中的对象 ( AnObject ( 不是擦除成员向量 ( Anothervector (。

cond_trim应该接受集合的元素,而不是集合本身,即类型为 AnObject 的对象,而不是 Avector