STL泛型算法总结

泛型算法只是依赖于迭代器的操作,而不是依赖于容器

泛型算法可以分为3大类:

下面的vec和vec2代表相同类型的容器

1.只读算法:只允许读取其输入范围内的元素,而不改变元素

find(vec.cbegin(),vec.cend(),k)

查找算法:前两个参数表示元素范围的迭代器,第三个参数k表示要查找的元素,查找成功则返回等于第一个元素的迭代器,查找失败返回尾后指针

accumulate(vec.cbegin(),vec.cend(),0)

求和算法:前两个参数表示元素范围的迭代器,第三个参数表示和的初始值,返回该类型的参数范围内的和,可以为int,string等

equal(vec.cbegin(),vec.cend(),vec2.cbegin())

比较算法:将第一个范围内的元素和第二个序列中的元素比较,如果对应元素都相等,返回true,否则返回false,这里默认第二个序列的元素数>=第一个范围内的元素数

2.写容器元素算法:将元素写入输入范围

fill(vec.cbegin(),vec.cend(),0)

表示迭代器范围内的值都被置为0(假设vec存的是int型)

fill_n(vec.begin(),vec.size(),0)

表示从指定迭代器  vec.begin()  开始以后的vec.size()个元素的值都被置为0(假设vec存的是int型)

注:上面的写算法不允许在空容器上调用,即容器中有几个元素,写算法才能写几个元素,只能修改,不能添加,如果想要添加只能使用插入迭代器(下篇会介绍)

copy(vec.cbegin(),vec.cend(),vec2.cbegin())拷贝算法:将迭代器范围内的元素拷贝到vec2容器中,这里默认第二个容器的空间能够存储该迭代器范围内的元素

replace(vec.cbegin(),vec.cend(),before,after)

替换算法:将容器迭代器范围内的元素中 所有为before的元素替换为after的元素,before和after分别为存储类型的具体数值

replace_copy(vec.cbegin(),vec.cend(),back_inserter(vec2),before,after)

替换算法:将容器迭代器范围内的元素中 所有为before的元素替换为after的元素,并插入到vec2中,before和after分别为存储类型的具体数值

3.重排容器元素算法

sort(vec.cbegin(),vec.cend())

排序算法:将迭代器范围内的元素按照定义的“<”来进行排序

unique(vec.cbegin(),vec.cend())

排序算法:将迭代器范围内的元素按照unique的标准库算法进行排序,使得不重复的元素出现在开始的位置,并且返回一个指向最后一个不重复元素之后的迭代器

 

注:要真正删除容器中的元素,必须使用容器操作,泛型算法只是依赖于迭代器的,向容器中插入元素可以不必使用容器操作,可以使用插入迭代器操作。

转载于:https://www.cnblogs.com/runninglzw/p/4751220.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java x锁_基于Java名称的锁?

MySQL具有方便的功能&#xff1a;SELECT GET_LOCK("SomeName")这可用于为应用程序创建简单但非常具体的基于名称的锁。但是&#xff0c;它需要数据库连接。我有很多情况&#xff0c;例如&#xff1a;someMethod() {// do stuff to user A for their data for feature…

HDU 2242 考研路茫茫——空调教室

考研路茫茫——空调教室 Time Limit: 2000msMemory Limit: 32768KBThis problem will be judged on HDU. Original ID: 224264-bit integer IO format: %I64d Java class name: Main众所周知&#xff0c;HDU的考研教室是没有空调的&#xff0c;于是就苦了不少不去图书馆的…

如何查看现有项目的struts和hibernate和spring版本

1. struts的版本信息 查看 struts.jar\META-INF\MANIFEST.MF再查看 Implementation-Version看后面的数字.. Manifest-Version: 1.0Specification-Title: Struts FrameworkClass-Path: commons-beanutils.jar commons-collections.jar commons-dig ester.jar commons-fileuploa…

java 正则表达式 组合_java基础:5.1 面向对象、类的关联 聚合 组合、正则表达式...

上一个礼拜太忙了&#xff0c;今天开始恢复java的学习~目录1、面向过程——面向对象的区别传统的面向过程式编程是动作驱动的&#xff0c;数据和动作是分离的。面向对象编程的范式重点在于对象&#xff0c;动作和数据一起定义在对象中。面向过程的范式重点在于设计方法。面向对…

html5学习之路_003

html布局 使用<div>元素布局使用<table>元素布局<div>元素布局 <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title>div布局</title><link rel"stylesheet" type&qu…

计算机二级 java和web_2020年全国计算机二级WEB程序复习知识点:JavaBean

【摘要】即将参加全国计算机等级考试的考生们&#xff0c;考试即将到来&#xff0c;大家的备考工作进行得如何了&#xff1f;考必过为大家精心整理了2020年全国计算机二级WEB程序复习知识点&#xff1a;JavaBean&#xff0c;希望能够助力全国计算机等级考试&#xff0c;相信坚持…

java表达式语句_Java基础知识笔记第三章:运算符表达式语句

算术运算符与表达式操作符描述例子加法 - 相加运算符两侧的值A B 等于 30-减法 - 左操作数减去右操作数A – B 等于 -10*乘法 - 相乘操作符两侧的值A * B等于200/除法 - 左操作数除以右操作数B / A等于2&#xff05;取余 - 左操作数除以右操作数的余数B%A等于0自增: 操作数的值…

JavaScript_Util_01

//记住细节往往能让自己更有效率。定义变量&#xff0c;打冒号//XML文档空格bug补救方案function cleanWhiteSpace(element){elementelement||document;var cur element.firstChild;while(cur ! null){ //如果是文本节点&#xff0c;并且只包含空格if(cur.nodeType 3 &&a…

java简单创建图片面板_图像界面编程简单窗体创建

/** 图像界面编程* JFrame 窗体* JPanel 面板* JLabel 标签* JButton 按钮* JLabel 标签* ImageIcon 图标*** */package fish;import java.util.*;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax…

变量不合法的表达式JAVA_Java8中lambda表达式的语法,别人都会的,你还不会吗?「一」...

函数式编程函数式编程是一种编程方式&#xff0c;它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus)&#xff0c;λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。 函数式编程是"结构化编程"的一种&#xff0c;主要思想是把运…

【原创】请不要对Boost Format使用Byte作为参数

曾几何时我们可以肆无忌惮的对sprintf传入BYTE等类型作为参数&#xff0c;只要你指定的为%D即可打印出对应的数字但是boost format不可以&#xff0c;当你发生类型截断&#xff0c;错误&#xff0c;异常&#xff0c;请尽快查看你传入的类型是否为Byte因为format会将GoByte当做c…

java中catch ()_有关java中的try{}catch(){}的讲解

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/qq_38225558/article/details/82054100try {可能出现异常的代码(包括不会出现异常的代码)} catch (Ex…

PAT (Advanced Level) Practise:1001. A+B Format

【题目链接】 Calculate a b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits). Input Each input file contains one test case. Each case contains a pair of i…

stderr java_如何使用Log4j将stdout和stderr写入/捕获到文件并使用Windows和Tomcat 5.5(Java)?...

我正在使用Windows 2008 R2和Apache Tomcat 5.5,以获取您的信息.STDOUT和STDERR可以通过Apache Tomcat属性自动记录,通过Logging选项卡 – >重定向Stdout和重定向Stderror文本框.但我想通过log4j来控制它.我正在尝试利用ConsoleAppender和TimeAndSizeRollingAppender class来…

动手制作属于你自己的WIN PE3.0

最近想要更新公司的网Ghost系统&#xff0c;所以小研究一下win pe &#xff0c;在网上看见一个很不错的教程&#xff0c;在这里分享给大家&#xff01;并非原创&#xff0c;纯属转载&#xff01;&#xff01;O(∩_∩)O~天缘的作品&#xff0c;很是佩服这个哥们啊.....一、WINPE…

java 命令行读取_Java:从控制台(console,命令行)读取字符 | 学步园

/*** 从控制台(console,命令行)读取字符&#xff1a;InputStreamReader(System.in)*/import java.io.IOException;import java.io.InputStreamReader;public class Test{public static void main(String[] args) throws IOException{StringBuffer sql null;sql sqlReaderFrom…

vector初始化

对vector对象来说&#xff0c;直接初始化的方式适用于3种情况&#xff1a;1.初始值已知且数量少&#xff1b;2.初始值是另一个vector对象的副本&#xff1b;3.所有元素的初始值都一样。此外还有一种更常见的情况是4.创建一个vector对象时并不清楚实际所需元素的个数&#xff0c…

python图像处理模糊_Python+OpenCV图像处理之模糊操作

模糊操作是图像处理中最简单和常用的操作之一&#xff0c;该使用的操作之一原因就为了给图像预处理时减低噪声&#xff0c;基于数学的卷积操作均值模糊&#xff0c;函数 cv2.blur(image,(5,5))&#xff0c;这是一个平滑图片的函数&#xff0c;它将一个区域内所有点的灰度值的平…

javascript Date类型 学习笔记

1 创建一个新的日期对象&#xff0c;如果不带参数&#xff0c;则对象自动获得当前的日期和时间 var d new Date() 2 如果需要指定特定的日期&#xff0c;则可以通过Date.parse() 或者 Date().UTC(),返回时间戳作为 new Date()的参数 Date.parse() 用法&#xff1a; var time…

python如何访问私有变量_python – 从类访问私有模块变量

我正在尝试理解python范围规则.为此,我尝试从同一模块中的类访问“非常私有”变量bar "bar"_bar "underscore"__bar "double underscore"def foo():print barprint _barprint globals()["__bar"]print __barclass Foo:def __init__…