问题标签 [erase-remove-idiom]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
157 浏览

c++ - 为什么 std::erase 和 std::erase_if 不支持投影?

C++ 范围很好,但是 AFAIK 他们仍然“受苦”,因为他们不知道修改容器,例如,如果你使用ranges::remove你仍然需要做container.erase(...

现在有些算法确实知道如何从容器中擦除(std::erase, std::erase_if),但与范围不同,它们不支持投影。

我的问题是否仅仅是因为(AFAIK)该功能是与范围分开提出的(+缺乏时间/缺乏建议),或者是否存在此功能不可用的根本原因。

0 投票
1 回答
61 浏览

c++ - 擦除带有不可打印字符的 std::string 上的删除习语会引发异常

我正在通过管道从另一个进程中读取一些文本。管道将数据返回给变量chBuf,但包含许多不可打印的字符。我尝试使用擦除和删除来删除这些不可打印的字符,但抛出异常。该程序在没有此擦除删除线的情况下工作。我可能做错了什么?

0 投票
1 回答
106 浏览

c++ - C++ 擦除/删除算法中的指针问题

我一直在尝试创建一个 C++ 程序来使用Eratosthenes 算法的 Sieve来查找某个整数 n 下的所有素数,如下所示:

  1. 创建一个从 2 到 n 的整数向量。

  2. 从向量的最小元素 2 开始,将其添加到新的素数向量中,并从整数向量中删除 2 的所有倍数。

  3. 对整数向量的新的最小元素(即 3)重复此过程并重复此过程,直到整数向量为空。素数向量然后包含所有需要的素数。

现在,此代码有效:

但是,以下代码不起作用(唯一的区别在于while循环):

值得注意的是,后一个程序正确返回所有素数,但也返回 4。我计算出后一个程序将 2 添加到素数列表中,然后添加 3 并删除 3 的倍数,然后添加 4 并删除倍数4 等。但重要的是没有删除 2 的倍数。

为什么后一个程序有这个错误,当我简单地pwhile循环中的(等于*ptr)替换为*ptr?我会这样认为ptr并且在循环*ptr的每次迭代中都不会改变while(当然,直到循环的最后一行),但显然它们会改变。

0 投票
0 回答
21 浏览

list - 链表中的擦除函数

我正在编写一个用于散列数据结构中的单独链接的程序。在那我想写一个删除函数来删除一个特定的元素。我应该使用擦除函数,但我很困惑如果我们在列表的节点上使用 C++ STL 擦除()函数。列表的下一部分会自动连接到列表的前一部分还是我们必须自己连接它,这样我们就不会丢失具有相同哈希函数值的其余元素?

0 投票
3 回答
70 浏览

c++ - 擦除范围是否比单独擦除每个元素更有效?

如果您已经定义了要“擦除”的元素范围,那么调用vector::erase(iterator)该范围内的每个元素还是调用vector::erase(iterator,iterator一次更有效?

0 投票
4 回答
110 浏览

arrays - 使用 C 中的指针从数组中删除整数的函数

我有一个问题,我需要编写一个函数,该函数从键盘读取整数 X 和 int 类型(大小 N)的数组 A,并消除 A 中所有出现的 X。例如,输入是:

5

1 2 3 4 3

3

它会返回:

答:1 2 3 4 3

新答:1 2 4

到目前为止我的代码是

但如果你能帮忙,我不知道如何继续

0 投票
3 回答
105 浏览

c - (初学者)不知道为什么代码没有给出正确的输出

首先,我正在尝试创建一个程序,该程序采用两个字符数组并从第一个数组中删除第二个数组中出现的任何字符。我添加了评论,以便更容易理解正在发生的事情。

这是输出: 图像 而不是 'Post: I' 它应该是: 'Post: I at fd' 总而言之,我得到了错误的输出,我目前不知道如何修复它。

0 投票
3 回答
51 浏览

c++ - 从向量中删除重复项会产生意想不到的结果

给定一个整数向量,遍历该向量并检查是否有多个相同的数字。在这种情况下,请删除它们,以便只有向量的单个索引包含该数字。这里有一些例子:

我知道对此有很多解决方案,但我想用我的方法解决它。我看过的解决方案使用了很多内置函数,作为初学者,我不想太适应。我想锻炼我解决问题的能力。

这是我的代码:

问题是它在大多数情况下都有效,除了一些让我感到困惑的情况。

例如:

但是,在这种情况下:

它似乎在绝大多数情况下都有效,但是当一个数字在向量中重复很多次时,它似乎不起作用,我似乎找不到原因。

我现在要求您首先告诉我问题的原因,然后指导我应该如何使用我的解决方案来解决这个问题。

0 投票
1 回答
57 浏览

c++ - 使用erase-remove idiom时崩溃

当我执行下面包含擦除删除习语的代码时,我遇到了崩溃(分段错误)。我想知道是什么问题。