
stl 通用算法中的remove()和list容器的remove()函数是一样的么?
我觉得list.remove()应该是真的删除了元素的吧,而且改变了容器的大小,类似于其他容器的erase(),而通用算法中的remove()只是将要删除元素给覆盖了而已...
我觉得list.remove()应该是真的删除了元素的吧,而且改变了容器的大小,类似于其他容器的erase(),而通用算法中的remove()只是将要删除元素给覆盖了而已,并没有改变容器大小,不知这种猜测是否正确呢?
展开
1个回答
展开全部
你的猜测完全正确,下面是示例验证程序,和输出结果
list<int> l1,l2;
print("list 1:");
push_order(l1);
print(l1.begin(),l1.end());
remove_if(l1.begin(),l1.end (),is_odd);
print(l1.begin(),l1.end());
print("list 2:");
push_order(l2);
print(l2.begin(),l2.end());
l2.remove_if(is_odd);
print(l2.begin(),l2.end());
输出:
list 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 4 6 8 10 12 14 16 18 20 11 12 13 14 15 16 17 18 19 20
list 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 4 6 8 10 12 14 16 18 20
请按任意键继续. . .
list<int> l1,l2;
print("list 1:");
push_order(l1);
print(l1.begin(),l1.end());
remove_if(l1.begin(),l1.end (),is_odd);
print(l1.begin(),l1.end());
print("list 2:");
push_order(l2);
print(l2.begin(),l2.end());
l2.remove_if(is_odd);
print(l2.begin(),l2.end());
输出:
list 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 4 6 8 10 12 14 16 18 20 11 12 13 14 15 16 17 18 19 20
list 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 4 6 8 10 12 14 16 18 20
请按任意键继续. . .
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询