首页 > 其他分享 >remove_if的使用

remove_if的使用

时间:2023-06-02 16:05:36浏览次数:23  
标签:std ForwardIterator remove result 使用 include first

remove_if(iterator1, iterator2, func());

用于对容器内的元素进行操作,源码如下:

template <class ForwardIterator, class UnaryPredicate>
  ForwardIterator remove_if (ForwardIterator first, ForwardIterator last,
                             UnaryPredicate pred)
{
  ForwardIterator result = first;
  while (first!=last) {
    if (!pred(*first)) {
      *result = std::move(*first);
      ++result;
    }
    ++first;
  }
  return result;
}

特性:只是在符合删除条件的元素本来的位置上用后来的元素进行了替换,并不会删除多余的空间,执行完毕后,返回剩余元素下一位的迭代器。

要想在remove以后,删除多余的元素,需要在remove_if的外层使用erase函数,例子如下:

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
int main()
{
    std::vector<string> c { "123", "4564", "426567", "543d5", "4" };
    int x = 4;
    c.erase(std::remove_if(c.begin(), c.end(), [x](string n) { return n.size() >= 4; } ), c.end());
    std::cout << "c: ";
    for (auto i: c) {
        std::cout << i << ' ';
    }
    std::cout << '\n';
}


标签:std,ForwardIterator,remove,result,使用,include,first
From: https://blog.51cto.com/u_16131207/6403465

相关文章

  • 反向迭代器的使用
    对一个vector反向迭代器的使用例子:vector<int>::reverse_iteratorr_iter;for(r_iter=vec.rbegin();//bindsr_itertolastelementr_iter!=vec.rend();//rendrefers1before1stelement++r_iter)//decrementsiteratoroneelementcou......
  • 使用Hutool的@Alias注解和JSONUtil.toJsonStr()的问题记录
    表格如下: 定义类结构如下:  使用fastjson转换后的结果                                使用hutool的JSONUtil转换之后的结果      可以看到JSONUtil类转换之后格式并不是我们需要的类的字......
  • NVM的使用
    NVM的使用 前言使用nvm的原因:由于多个项目存在使用不同版本的node及npm环境:iview源码的gulp依赖的是nodev10taro依赖环境在nodev12及以上故存在不兼容现象,引入nvm解决node环境问题nvm的功能nvm全名node.jsversionmanagement,顾名思义是一个nodejs的版本管理工具......
  • 在外汇交易中使用EA交易有意义吗?Forexclub 一个准则给您答案
    在外汇交易中应用EA交易有意义吗??外汇交易者通常有2种相反的答案,经常争论的喋喋不休,今天Forexclub一个准则给您答案。有些外汇交易者认为有意义。有些外汇交易者认为把EA交易应用到细分市场还是不错的。外汇交易者可以非常谨慎的使用EA交易。通过Forexclub聊天得知,这些外汇交易......
  • python使用cx_Oracle连接timesten
    环境:OS:WindowsDB:18.1  1.配置环境变量TNS_ADMIN=C:\TimesTen\tt181_64\network\admin 2.创建tnsnames.ora文件在timesten安装目录下C:\TimesTen\tt181_64\network\admin\samples拷贝一个tnsnames.ora到C:\TimesTen\tt181_64\network\admin进行修改 3.修改tnsnames......
  • transformers入门使用
    transformers入门使用HuggingFace是一个开源社区,它提供了先进的NLP模型,数据集,以及其他工具。模型:https://huggingface.co/models数据集:https://huggingface.co/datasets主要的模型自然回归:GPT2,Trasnformer-XL,XLNet自编码:BERT,ALBERT,ROBERTa,ELECTRASto......
  • Oracle 游标使用全解
    --声明游标;CURSORcursor_nameISselect_statement--For循环游标--(1)定义游标--(2)定义游标变量--(3)使用for循环来使用这个游标declare--类型定义cursorc_jobisselectempno,ename,job,salfromempwherejob='MANAGER';......
  • ​​拍照替换 IOS手机端安装使用教程​
    拍照替换IOS手机端安装使用教程拍照插件是一款自动替换拍照数据的插件,支持单张多张照片选择替换,作用于系统全局,所有调用拍照的APP均有效。功能使用简单,单张,多张图片选择,按音量键切换照片。一、适用机型及系统1、机型:除SE和XR之外单所有iphone机型,可越狱即可2、系统:支持12系统及以......
  • webrtc-streamer使用
    下载地址:https://github.com/mpromonet/webrtc-streamer/releases获取使用的所有api:webrtc-streamer的服务地址:192.168.1.8:8000查询所有api:http://192.168.1.8:8000/api/help["/api/addIceCandidate","/api/call","/api/createOffer",......
  • paddleocr使用
    安装Anaconda3-2023.03-1-Windows-x86_64.exe配置源C:\Users\thzn>pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple/#配置condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/condaconfig--addchannelsh......