(一):生成随机数 要指定的话 需要在方法中指定最大的值 nextint(10)意思是 下一个的数是10 需要导包:import java.util.Random; (二)枚举 enum 的语法和适用情况...如图所示: 枚举也能用switch语句进行如图
C++ 在其定义中有一种将字符序列表示为 class 对象的方法。这个类叫做 std::string。String 类将字符存储为具有允许访问单字节字符的功能的字节序列。 ...std:: 字符串与字符数组 字符数组只是一个可以由空字符终止的字符数组。字符串是定义表示为字符流的对象的类 字符数组的大小必须静态分配,如果需要,不能在运行时分配更多内存。...实现字符数组是快比的std :: string。与实现相比,字符串比字符数组慢。 字符数组不提供很多内置函数来操作字符串。String 类定义了许多允许对字符串进行多种操作的功能。...str = "juejin"; std::string::iterator it; std::string::reverse_iterator it1; cout << "The...它需要 3 个参数,目标字符数组,要复制的长度和开始复制的字符串中的起始位置。 13. swap() :- 该函数将一个字符串与另一个字符串交换**。
std::thread和std::promise 相比std::async,std::thread就原始多了。...这里也凸显了std::async的高级和std::thread的低级:在std::async中我们可以对它的返回值即std::future简单的调用get()实现同步等待甚至能获取任务的结果,但是std...std::promise std::promise独树一帜,它用于线程间传递值,其中std::promise.set_value是设置值,std::promise.set_exception是设置异常,...多说一点,其实std::promise和std::future都是多线程状态共享的方案,这两种不存在高级低级,只有std::async和std::thread有点高级低级之分。...不过《C++标准库》中这样分类,加之std::future,std::promise分别用于std::async和std::thread的示例,我也只能照做了;)
std::async和std::future std::async创建一个后台线程执行传递的任务,这个任务只要是callable object均可,然后返回一个std::future。...::cout << "A"; } } int main() { std::future result{ std::async(std::launch::async,task...如果不赋值async会和同步调用一样在这里阻塞直到调用完毕,相当于没用async。...,根据情况选一种执行 std::launch::deferred 再来试试std::launch::deferred策略。...cout << "A"; } } int main() { std::future result{ std::async(std::launch::deferred,task
一、Random类 1.在java在指定范围内产生随机的数字就需要用到Random类。...2.Random类提供两个构造方法: Random()方法:创建一个新的随机生成器; Random(long seed)方法:使用单个long类型的seed种子创建新的随机生成器; 二、Random()...2.在java中每种的基本数据类型都有对应的包装类,如下图所示: ? 3.包装类和基本数据类型在转换时,引入装箱和拆箱的概念。...五、总结 本文主要介绍了Random类、Random()方法、Random(long seed)方法、包装类。 在java在指定范围内产生随机的数字就需要用到Random类。...Random(long seed)方法是有参数的,使用long类型的seed种子创建新的随机生成器。包装类可以把基本数据类型的值包装成引用数据类型。希望大家通过本文的学习,对你有所帮助!
一、Math类 1、常用方法 1、abs 绝对值 2、acos,asin,atan,cos,sin,tan 三角函数 3、 sqrt 平方根 4、pow(double a, double b) a的b次幂...double b) 取大值 6、min(double a, double b) 取小值 7、ceil(double a) 大于a的最小整数 8、floor(double a) 小于a的最大整数 9、random...System.out.println(Math.pow(5, 2)); //a的b次幂(25.0) System.out.println(Math.pow(2, 5)); //32.0 //Math类中常用的常量...3.141592653589793 System.out.println(Math.E); //2.718281828459045 //随机数 System.out.println(Math.random...()); // [0,1)0.842255731246934 二、Random类 Random rand = new Random(); //随机生成[0,1)之间的double类型的数据 System.out.println
数组和std::array std::array是C++容器库提供的一个固定大小数组的容器。其与内置的数组相比,是一种更安全、更容易使用的数组类型。...同时该结构体结合了C风格数组的性能、可访问性和容器的优点(可获取大小、支持赋值和随机访问等)。...2.2.3 迭代器 begin、end和cbegin、cend begin和cbegin返回指向deque首元素的迭代器,end和cend返回指向deque末元素后一元素的迭代器。...=,,>=,(std::array) C++提供operator==,!... >; //C++11 起 其使用类 tuple 接口,提供 array 元素类型的编译时带下标访问。
链表和std::list 链表是一种在物理上非连续、非顺序的数据结构,数据元素的逻辑顺序是通过链表中的指针链接实现,其由若干节点所组成。...std::list是C++中支持常数时间从容器任何位置插入和移除元素的容器,但其不支持快速的随机访问,其通常实现为双向链表。...在std::list中添加、移动和移除元素不会使迭代器或引用失效,迭代器只有在对应元素被删除时才会失效。...3-6中按照字典比较lhs和rhs的内容,其内部等价于调用std::lexicographical_compare函数进行比较。 7中也是按字典序比较lhs和rhs的内容。...总结 list容器的优势和劣势: 优势 采用动态内存分配,不会造成内存浪费和溢出。 执行插入和删除操作十分方便、高效。修改指针即可,不需要移动大量元素。
枚举 但是,除了宏之外,还可以使用枚举。...return; //退出 } //输出结果 printf("%d+%d = %d\n",number1,number2,result); return 0; } 枚举有名字...,我们这个枚举叫OPT。...枚举虽然看起来像结构,但是枚举与结构完全不是一回事。枚举的每一项就是为一个整数取了个名字,每一项都是一个常量,而不是的成员变量。枚举的用处更像是把表示某种东西的相关值组织到一起,而宏就做不到了。...而枚举是强制把相关的项放在一起。 枚举的项的名字一般不大写,当然你可以像宏一样大写。只要你整个工程中都能坚持统一的风格就行了。
深入理解 C++ 中的 std::cref、std::ref 和 std::reference_wrapper 在 C++ 编程中,有时候我们需要在不进行拷贝的情况下传递引用,或者在需要引用的地方使用常量对象...为了解决这些问题,C++ 标准库提供了三个有用的工具:std::cref、std::ref 和 std::reference_wrapper。这篇文章将深入探讨这些工具的用途、区别以及实际应用。...此外,我们知道Rust语言中,经常实现了Unwrap方法,在C++中如何实现?...number << std::endl; return 0; } 3. std::reference_wrapper:引用的包装器 std::reference_wrapper 是一个模板类...允许我们将引用包装在容器中,然后通过 get() 方法来访问和修改原始对象的值。
1. std::vector std::vector是C++的默认动态数组,其与array最大的区别在于vector的数组是动态的,即其大小可以在运行时更改。...=( std::initializer_list ilist ); //C++20 起 复杂度: 1的复杂度与 *this 和 other 的大小成线性。...2.2.3 迭代器 begin、end和cbegin、cend begin和cbegin返回指向vector首元素的迭代器,end和cend返回指向vector末元素后一元素的迭代器。...rbegin、rend和crbegin、crend rbegin和crbegin返回指向vector首元素的逆向迭代器。...=,,>=,(std::vector) C++提供operator==,!
和C语言一样,C++ 头文件仍然以.h为后缀,它们所包含的类、函数、宏等都是全局范围的。...后来 C++ 引入了命名空间的概念,计划重新编写库,将类、函数、宏等都统一纳入一个命名空间,这个命名空间的名字就是std。 std 是 standard 的缩写,意思是“标准命名空间”。...C++ 开发人员想了一个好办法,保留原来的库和头文件,它们在 C++ 中可以继续使用,然后再把原来的库复制一份,在此基础上稍加修改,把类、函数、宏等纳入命名空间 std 下,就成了新版 C++ 标准库。...2) 新的 C++ 头文件,如 iostream、fstream 等包含的基本功能和对应的旧版头文件相似,但头文件的内容在命名空间 std 中。...头文件的内容不在 std 中。 4) 具有C库功能的新C++头文件具有如 cstdio、cstdlib 这样的名字。它们提供的内容和相应的旧的C头文件相同,只是内容在 std 中。
C++函数指针和std::function对象 这篇博文中通过实现对String字符串大小写转换为列来说明C++中函数指针和std::function对象的使用。...我们在博文《C++实现一个简单的String类》中的自定义的String类为基础,再添加两个成员函数用于将字符串全部转为大写(toUpperCase)和全部转为小写(toLowerCase)。...下面我们分别使用函数指针的方式和C++ 11中的std::function对象进行实现。本文不对std::function的优点进行介绍,这是以一个简单示例进行入门介绍。...::function对象 头文件 可以看到我们这里使用了std::function类型作为String::map函数的参数类型,std::function是一个模板类,尖括号中标识了返回值,圆括号中标识了参数列表...中的std::toupper和std::tolower函数的返回值和参数类型由int强制转换为char即可。)
这是EasyC++系列的第62篇,类常量和类枚举。 类常量 有的时候, 我们希望能给类当中定义一些常量,可以给所有类的对象使用。...这个常量会和其他静态变量存储在一起,而不是存储在对象里,这样的话也就被所有对象共享了。 对于像是Java、Python等其他语言来说,类中的静态变量是可以通过类名直接访问的,而C++中不行。...通过这种方式声明并不会创建类数据成员,对于类的对象来说,并不包含枚举,这里的N只是一个符号名称。在类当中遇到它的时候,编译器会用15来代替。...也正是因为我们只是为了创建符号常量,而不是创建枚举类型的变量,所以不需要提供枚举名。有一些C++的类库当中也用到了这种方法,比如ios_base::fixed等。..., xlarge}; 和上面的代码几乎是一样的,只不过多了一个关键字class,换成struct也是可以的。
什么是Random类 在JDK的java.util包中,有一个Random类,它可以在指定的取值范围内随机产生数字。...Random使用步骤 查看类 java.util.Random :该类需要 import导入使后使用。 查看构造方法 public Random() :创建一个新的随机数生成器。...查看成员方法 public int nextInt(int n) :返回一个伪随机数,范围在 0 (包括)和指定值 n (不包括)之间的 int 值。...使用Random类,完成生成3个10以内的随机整数的操作,代码如下: //1....创建随机数生成器对象 Random r = new Random(); for(int i = 0; i < 3; i++){ //3.
枚举类 Kotlin中的枚举类和Java中的枚举类型非常相似,具有类的特性。一般将可枚举的同类型的一组值作为枚举类定义。...默认状态下,直接输出枚举类的元素值,会输出元素值的名称。 为枚举值指定数值 其实枚举类每一个值就是当前枚举类的对象,因此,如果要为每一个枚举类的值指定一个数字,直接通过构造器传入即可。...,这个数并不一定从0开始,也不一定是按顺序的,因此枚举值在枚举类中的位置和枚举值对应的数值可能并不相同。...无论是Java还是Kotlin都提供了相应的API来获取枚举值的名字和索引。Kotlin提供了name和ordinal属性,分别用于获取枚举值名和索引。...在类的外部对系统的类进行扩展,由于将扩展的部分都放到了自己的源代码中,因此这些源代码仍然可以运行在其他机器的JDK和Kotlin运行时上。
转移语义可以将资源 ( 堆,系统对象等 ) 从一个对象转移到另一个对象, ** 这样能够减少不必要的临时对象的创建、拷贝以及销毁,能够大幅度提高 C++ 应用程序的性能。...** C+11之前通过拷贝构造函数和拷贝赋值操作符为类设计了拷贝/复制,没有实现对资源移动操作。...::move(tmp)); //call && } /* ** 复制和移动语义 ** */ std::vector test_str_split(const std::string...+ 上述涉及到的移动语义,是由C++11之前存在的一些历史遗留问题,使C++标准库的实现在多种场景下消除了不必要的额外开销(如std::vector, std::string).这些问题都由于构造函数和拷贝构造函数以及赋值构造函数引起...+通过拷贝构造函数和拷贝赋值操作符为类设计了拷贝/复制的概念,但为了实现对资源的移动操作,调用者必须使用先复制、再析构的方式。
1、枚举类使用情况一: 1 package com.bie.util; 2 3 import java.util.HashMap; 4 import java.util.Map;...53 //加强for循环进行遍历操作 54 for(LoginResult lr : values){ 55 //如果遍历获取的type和参数...4=登陆密码错误} 104 //System.out.println(LoginResult.getChoiceMap()); 105 } 106 107 } 2、枚举类使用情况二...* 5 * @author biehl 6 * 7 * @date 2018年8月2日下午3:38:28 8 * 9 * @Notes REGISTER("注册"),这种类型的枚举可以使用在调用此枚举类然后使用...System.out.println(OperatorType.getResultEnumByDesc("删除")); 56 57 } 58 59 } 3、枚举类使用情况三
双端队列和std::duque 双端队列实际上是队列的一种变形,队列要求只能在队尾添加元素,在队头删除元素,而双端队列在队头和队尾都可以进行添加和删除元素的操作。...双端队列是限定插入和删除操作在表的两端进行的线性表。C++中提供deque容器来实现双端队列的功能。...std::duque(double-venden queue, 双端队列)是C++容器库里中有下标顺序容器,它允许在首尾部两端快速的插入和删除元素。...>; //C++17 起 } 其中,参数T为容器要存储的元素类型,对于T需要满足: 可复制赋值和可复制构造(C++11...rbegin、rend和crbegin、crend rbegin和crbegin返回指向deque首元素的逆向迭代器。
Math类 package oop2.Mathh; public class MathA { public static void main(String[] args) { System.out.println...Math.ceil(3.16)); //向上取整 System.out.println(Math.floor(3.9)); //向下取整 System.out.println(Math.random...类 随机数 package oop2.Mathh; import java.util.Random; public class RandomA { public static void main(String...[] args) { Random random = new Random(); // Random()括号里有数字,则为种子,之后产生的数叫伪随机数...//产生0-10内随机整数 int i = random.nextInt(10); //如过是 nextInt() ,括号没有数,将会产生int类型范围内的数
领取专属 10元无门槛券
手把手带您无忧上云