C++ vector erase and remove

// v.erase(it) 是用后面的元素依次递补被删掉的元素
// 会造成当前迭代器访问不了后面的数据(前面的没有失效),这时可以令当前
// 迭代器等于返回的迭代器(被删元素的下一个)

vector<int> v = {4,3,9,9,2,5,9};

	for (auto it = v.begin(); it != v.end();)
	{
		if (*it == 9)
			it = v.erase(it); 
		else
		   ++it;
	}

// remove在algorithm里面,它实际上是将范围内的 所有要删除的元素以此用后面的元素补上,然后返回
// 当前新vector的end

vec.erase(remove(vec.begin(), vec.end(), 3), vec.end());


// 如果删除某个元素,所有容器(除了vector和deque)保证迭代器以及用以指向其他元素的引用继续保持有 // 效。对于vector而言,只有被删除元素之前的迭代器、指针和引用有效,被删除元素以及被删除元素之后的 // 迭代器、指针和引用均会失效。

// 如果插入某个元素,只有list、forward_list和关联式容器(map/multimap、set/multiset)可以保证 // 原本的迭代器和指向元素的引用继续保持有效。
// 对于vector而言,只有当插入操作不会造成内存的重新分配(也就是元素的个数不会超过vector的容      // 量capacity),插入位置之前的迭代器依然有效,插入位置之后的迭代器失效

谈谈C++中vector的删除_lishichengyan的博客-CSDN博客_vector 删除

C++中vector迭代器失效问题以及删除所有带有某值的元素_mingwu96的博客-CSDN博客_vector迭代器删除元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值