从向量中擦除元素是否也会擦除元素中存在的所有成员向量
Does erasing elements from a vector also erase all the member vectors present in the elements?
我正在使用erase
和remove_if
有条件地从对象(AnObject
s(的向量实例(AVector
(中删除元素。
在我的方案中,AnObject
有一个Anothervector
(Anotherobject
s(作为其成员变量之一。我想删除任何大小为 0 Anothervector
对象。注意:BVector
是AnObject
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
。
相关文章:
- 擦除while循环中迭代的元素
- 擦除许多矢量元素,同时使用'auto'
- 擦除是否删除 stl 无序列图元素使用的堆内存
- 调用 erase() 函数是否也会在擦除元素之前更改迭代器值?
- 为什么在功能内擦除元素后不列出更新?
- 在任一方向上迭代容器并擦除元素
- 擦除矢量中的所有元素,直到第一个非零元素C++
- 迭代时擦除设置元素///
- 从向量和对向量中擦除元素的差异
- 如何安全地擦除 std::vector 中的元素
- 如何将某个元素从shared_ptr擦除到对象向量?
- 如何擦除矢量元素中没有特定字符的元素
- 矢量擦除范围内的元素
- 给定一个向量,擦除低于 itemsnum 的元素
- 从地图上擦除元素,然后将其放回原处
- 使用 str.erase() 的索引擦除字符串的元素?
- C 矢量元素擦除与新向量创建
- 迭代一组和擦除元素
- 使用常量键从集合中擦除元素
- 从向量中擦除元素是否也会擦除元素中存在的所有成员向量