问题标签 [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.
c++ - 从容器中删除元素的单语句方法
是否有一种算法可以从容器中删除元素,如下面的代码中发生的那样?
c++ - boost绑定编译错误
我收到如下错误:
有人可以告诉我我做错了什么吗?
c++ - C++ Erase vector element by value rather than by position?
and lets say the values in the vector are this (in this order):
#xA;If I wanted to erase the element that contains the value of "8", I think I would do this:
#xA;Because that would erase the 4th element. But is there any way to erase an element based off of the value "8"? Like:
#xA;Or do I simply just need to iterate through all the vector elements and test their values?
c++ - 用于在嵌套容器中删除的擦除删除习语?(删除外部的;C++ STL)
当我从像向量这样的非嵌套容器中删除时,我正在做类似的事情:
这就是所谓的erase-remove idiom。
现在,我有第二个数据结构vector<vector<unsigned int> >
or deque<vector<unsigned int> >
,我想根据 bitset 删除外部容器元素(它本身就是内部类型的容器)。
- 是否可以在此嵌套容器类型上使用擦除删除习语?
- 如果是,怎么可能?
- 有限制吗?(比如:vec 的 vec 是可能的,但不是 vec 的双端队列)?
我的第一个也是幼稚的方法如下。我假设 remove_if 是按顺序迭代元素并一个接一个地决定的。这是一个错误的假设吗?
结果是错误的,因此我在这里寻找正确的解决方案。我想我假设了一些无法保证的事情。对我来说,基本问题如下:如何获取内部容器的身份以检查是否要移除。.
我在上面发布的幼稚方法只是计算并假设顺序处理。
谢谢你的帮助。
萨沙
更新和警告
对于向量 o 向量,Stas解决方案效果很好。但我认为这个解决方案不适用于向量的双端队列,因为双端队列不是以连续的方式保存的。这意味着,仿函数中索引的计算失败。
任何人都可以验证吗?
c++ - std::remove_if - lambda,不从集合中删除任何内容
好吧,我想我在这里犯了一个愚蠢的错误。我有一个 DisplayDevice3d 列表,每个 DisplayDevice3d 都包含一个 DisplayMode3d 列表。我想从 DisplayDevice3d 列表中删除没有任何 DisplayMode3d 的所有项目。我正在尝试使用 Lambda 来做到这一点,即:
尽管在 MyDisplayDevices 中的 6 个 DisplayMode3d 中,只有 1 个在其 Modes 集合中有任何 DisplayMode3d,但没有从列表中删除任何内容。
我在这里犯了什么重大错误?
编辑:
好吧,我的错误是我应该使用 MyDisplayDevices.remove_if 而不是 std::remove_if,但是下面的答案对于使用 std::remove_if :p 是正确的。
c++ - 如何使用 C++ 中的删除命令删除句子中的空格?
我得到一个文件作为输入,我像这样读取第一行(引号标记开始和结束,但不在文件中):
当我像这样使用删除命令时:
我得到的输出为:
我只需要输出1,2.0,3.0,4.0
。这里有什么问题?
c++ - 根据索引移除向量元素
我想根据索引删除向量的元素,比如所有偶数索引元素。我已阅读有关擦除删除习语的信息,但看不到如何应用它。这是我尝试过的:
这会擦除整个向量。我希望只删除已被删除算法标记的元素。
然后我尝试了这个
这再次不起作用,因为在删除时存在问题,索引似乎在迭代向量时发生了变化。完成此任务的正确方法应该是什么。
c++ - 执行 remove_if() 后擦除()
我创建了一个函数来遍历字符串向量并删除长度为 3 或更短的任何字符串。这是使用 STL 算法库的一课。
我在函数工作时遇到了麻烦,但它不仅会删除长度为 3 或更短的字符串,而且还会将字符串“vector”附加到末尾。
输出应该是
相反,它是
我该如何解决?
c++ - 从 lambda 访问 for_each 迭代器
是否可以访问 std::for_each 迭代器,所以我可以使用 lambda 从 std::list 中擦除当前元素(如下所示)
我读过关于使用 [](typename T::value_type x){ delete x; } 这里关于 SO,但 VS2010 似乎不喜欢这个声明(下划线 T 作为错误源)。