|
|
1
171
|
|
|
2
73
如果要删除 一 项目中,以下内容将更有效率。
或者,如果订单对您不重要,您可以避免移动项目的开销:
|
|
|
3
15
使用全局方法std::remove和begin和end迭代器,然后使用std::vector.erase实际删除元素。
文档链接
|
|
4
6
从…起 c++20 :
引入了一个非成员函数
前任:
|
|
|
5
5
如果您正在密集地执行此操作,那么出于这个原因,应该考虑使用std::set。 |
|
6
5
如果有一个未排序的向量,那么可以简单地与最后一个向量元素交换
有了一个订购的集装箱,你最好带上它
|
|
|
7
3
一个较短的解决方案(不会强迫您重复向量名称4次)是使用Boost:
|
|
|
8
3
下面是上面链接中的示例:
|
|
|
9
2
*
C++ 20 现在提供了一种简单的方法。 它变得非常简单:
你应该退房 std::erase 和 std::erase_if . 它不仅会删除值的所有元素(此处为“0”),而且还会在 O(n) 时间复杂性。这是你能得到的最好的。
|
|
10
0
如果您想在没有任何额外费用的情况下完成此操作,请包括:
|
|
11
0
有两种方法可以用来删除项目。
1) 非有效方式: 虽然它看起来相当有效,但这并不是因为擦除函数删除元素并将所有元素向左移动1。 所以它的复杂度是O(n^2)
2) 有效方式(推荐) 删除-删除习惯用法 .
移除算法的输出为:
因为remove的返回类型是该范围新端的迭代器。
所以这个方法在O(n)中有效 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |