对于vector中高效删除中间元素的技巧
发布时间:2020-12-15 07:19:14 所属栏目:Java 来源:网络整理
导读:众所周知,vector是连续存储空间,只提供高效的尾部删除方法pop_back() ,在中间删除的效率很低,那么如果大家想快速删除中间元素该如何实现? ? 话不多说,看代码: // 移除vector元素,最后一个填充。 templatetypename T inline void ListRemoveAt(vector
众所周知,vector是连续存储空间,只提供高效的尾部删除方法pop_back() ,在中间删除的效率很低,那么如果大家想快速删除中间元素该如何实现? ? 话不多说,看代码: //移除vector元素,最后一个填充。 template<typename T> inline void ListRemoveAt(vector<T>&list,size_t idx) { if (idx < list.size()) list[idx] = list.back(); list.pop_back(); } 我们的思路是: 如果想删除第二个元素,那么我们只需要将第二个元素填充为末尾元素,此刻就相当于把第二个元素删除了,但是此时尾部元素有两个, 所以我们需要把尾部元素删除(非常高效pop_back() ),这样的一套组合拳,就高效删除了vector中任意一个元素,当然,这种技巧适合于你对于元素的顺序无要求?!!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |