关系运算

深入探索迭代器(续)

a 夏天 提交于 2019-12-27 03:11:17
【 3. 反向迭代器】 反向迭代器是一种反向遍历容器的迭代器。其将自增(和自减)的含义反过来了: 对于反向迭代器,++ 运算将访问前一个元素,而 -- 运算则访问下一个元素。 所有容器还定义了 rbegin 和 rend 成员,分别返回指向容器尾元素和首元素前一位置的反向迭代器。 与普通迭代器一样,反向迭代器也有常量(const)和非常量(nonconst)类型。 图 11.1 使用一个假设名为 vec 的 vector 类型对象阐明了这四种迭代器之间的关系。 假设有一个 vector 容器对象,存储 0-9 这 10 个以升序排列的数字: vector<int> vec; for (vector<int>::size_type i = 0; i != 10; ++i) vec.push_back(i); // elements are 0,1,2,...9 下面的 for 循环将以逆序输出这些元素: // reverse iterator of vector from back to front vector<int>::reverse_iterator r_iter; for (r_iter = vec.rbegin(); // binds r_iter to last element r_iter != vec.rend(); // rend refers 1 before

python基础第一章

[亡魂溺海] 提交于 2019-12-26 13:52:34
Python基础 第一个python程序 变量 程序交互 基本数据类型 格式化输出 基本运算符 流程控制if...else... 流程控制-循环 第一个python程序 文件执行 1.用notepad++创建一个文件,输入以下代码: print('HelloWorld') print('python好简单啊,我要学好挣大钱!') 2.保存为HelloWorld.py,注意要强调.py后缀名的作用 3.进入 cmd命令行,执行python HelloWorld.py,看结果(在文件名前加python的原因是要把代码交给python解释器去解释执行) 交互器执行 python交互器就是主要用来对代码进行调试用的 变量 变量是什么? eat = 100+20+30 cloth = 200+300 print('total=',cloth+eat) 所谓的变量,就是 把程序运算的中间结果临时存放到内存里,以备后面的代码继续调用,用来标记数据,存储数据的 变量定义规范 声明变量 name = 'xiaoyafei' 其中name被称为“变量名/标识符”,'xiaoyafei'被称为“变量值”。 变量定义规则 变量只能是字母、数字、下划线的任意组合 变量名的第一个字符不能是数字 关键字不能被称为变量名,如 ['and','as','class'] 定义方式 驼峰体 AgeOfXiao = 20

指针运算——算术运算、关系运算

拥有回忆 提交于 2019-12-26 02:35:10
是不是对指针的任何运算都是合法的呢?答案是它可以执行某些运算,但并非所有的运算都合法。除了加法运算之外,你还可以对指针执行一些其他运算,但并不是很多。 指针加上一个整数的结果是另一个指针。问题是,它指向哪里?如果你将一个字符指针加1,运算结果产生的指针指向内存中的下一个字符。float占据的内存空间不止1个字节,如果你将一个指向float的指针加1,将会发生什么?它会不会指向该float值内部的某个字节呢? 答案是否定的。当一个指针和一个整数量进行算术运算时,整数在执行加法运算前始终会根据合适的大小进行调整。这个“合适的大小”就是指针所指向类型的大小,“调整”就是把整数值和“合适的大小”相乘。为了更好的说明,试想在某台机器上,float占据4个字节。在计算float型指针加3的表达式时候,这个3将根据float类型的大小(此例中为4)进行调整(相乘),这样实际上加到指针上的整型值为12。 把3与指针相加使指针的值增加3个float的大小,而不是3个字节。这个行为较之获得一个指向一个float值内部某个位置的指针更为合理。下表包含了一些加法运算的例子。调整的美感在于指针算法并不依赖于指针的类型。换句话说,如果p是个指向float的指针,那么p+1就指向下一个float,其他类型也是如此。 1.算术运算 C的指针的算术运算只局限于两种形式。第一种形式是: 指针+-整数

《STL源码剖析》——第七、八章:仿函数与接配器

南楼画角 提交于 2019-12-25 01:03:37
第七章:仿函数 7.1 、仿函数(函数对象)概观 STL仿函数的分类,若以操作数(operand)的个数划分,可分为一元和二元仿函数,若以功能划分,可分为算术运算 ( Arithmetic)、关系运算 ( Rational)、逻辑运算 ( Logical)三大类。任何应用程序欲使用STL内建的仿函数,都必须含人<functiona1>头文件,SGI则将它们实际定义于<st1_function.h>文件中。以下分别描述。 重载 () 所以函数的对象 使用()像函数调用 是类 而不是普通的函数 内部记录状态: 作为类型 与模板进行配合使用 1、函数对象通常不定义构造函数和析构函数,所以在 构造和析构时不会发生 任何问题,避免了函数调用的运行时问题。 2、函数对象超出普通函数的概念,函数对象可以有自己的状态 3、函数对象 可内联编译,性能好 。用 函数指针几乎不可能 4、模版函数对象使函数对象具有通用性,这也是它的优势之一 7.2 、可配接( adaptable )的关键 unary_function unary_function用来呈现一元函数的参数型别和回返值型别。其定义非常简单: binary_function binary_function 用来呈现二元函数的第一参数型别、第二参数型别,以及回返值型别。其定义非常简单: 7.3 、算术类( Arithmetic )仿函数

运算符

允我心安 提交于 2019-12-24 04:00:28
目录 算数运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 运算符优先级 算数运算符 假设 A = 10,B = 20。 算符 描述 实例 + 把两个操作数相加 A + B 将得到 30 - 从第一个操作数中减去第二个操作数 A - B 将得到 -10 * 把两个操作数相乘 A * B 将得到 200 / 分子除以分母 B / A 将得到 2 % 取模运算符,整除后的余数 B % A 将得到 0 ++ 自增运算符,整数值增加 1 A++ 将得到 11 -- 自减运算符,整数值减少 1 A-- 将得到 9 #include <stdio.h> int main() { int a = 21; int b = 10; int c ; c = a + b; printf("Line 1 - c 的值是 %d\n", c ); c = a - b; printf("Line 2 - c 的值是 %d\n", c ); c = a * b; printf("Line 3 - c 的值是 %d\n", c ); c = a / b; printf("Line 4 - c 的值是 %d\n", c ); c = a % b; printf("Line 5 - c 的值是 %d\n", c ); c = a++; // 赋值后再加 1 ,c 为 21,a 为 22 printf(

按位与、或、异或等运算方法

╄→гoц情女王★ 提交于 2019-12-23 05:59:31
按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。 另,负数按补码形式参加按位与运算。 “与运算”的特殊用途: (1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。 (2)取一个数中指定位 方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。 例:设X=10101110, 取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到; 还可用来 取X的2、4、6位。 按位或运算符(|) 参加运算的两个对象,按二进制位进行“或”运算。 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; 即 :参加运算的两个对象只要有一个为1,其值为1。 例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。  另,负数按补码形式参加按位或运算。 “或运算”特殊作用: (1)常用来对一个数据的某些位置1。 方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零

Web前端一种动态样式语言-- Less

寵の児 提交于 2019-12-23 02:05:55
变量 变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用。所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了。 // LESS @color: #4D926F; #header { color: @color; } h2 { color: @color; } /* 生成的 CSS */ #header { color: #4D926F; } h2 { color: #4D926F; } 混合 混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。 // LESS .rounded-corners (@radius: 5px) { border-radius: @radius; -webkit-border-radius: @radius; -moz-border-radius: @radius; } #header { .rounded-corners; } #footer { .rounded-corners(10px); } /* 生成的 CSS */ #header { border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; } #footer {

按位与、或、异或等运算方法

扶醉桌前 提交于 2019-12-23 00:20:06
按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0 例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。 另,负数按补码形式参加按位与运算。 “与运算”的特殊用途: (1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。 (2)取一个数中指定位 方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。 例:设X=10101110, 取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到; 还可用来取X的2、4、6位。 按位或运算符(|) 参加运算的两个对象,按二进制位进行“或”运算。 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; 即 :参加运算的两个对象只要有一个为1,其值为1。 例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。  另,负数按补码形式参加按位或运算。 “或运算”特殊作用: (1)常用来对一个数据的某些位置1。 方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零

文本文件和二进制文件的区别

会有一股神秘感。 提交于 2019-12-22 00:38:46
文本文件: 文本文件是一种计算机文件,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。 特别的是,文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车、换行等信息)外,不能存储其他任何信息。 文本文件是一种由若干行字符构成的 计算机文件 。文本文件存在于计算机文件系统中。通常,通过在文本文件最后一行后放置文件结束标志来指明文件的结束。 文本文件是指一种容器,而纯文本是指一种内容。文本文件可以包含纯文本。 一般来说,计算机文件可以分为两类:文本文件和 二进制文件 。[2] 格式 ASCII ASCII 标准使得 文件 只含有ASCII字符的文本文件可以在 Unix 、 Macintosh 、 Microsoft Windows 、 DOS 和其它 操作系统 之间自由交互,而其它格式的文件是很难做到这一点的。但是,在这些操作系统中,换行符并不相同,处理非ASCII字符的方式也不一致。 MIME 文本文件在MIME标准中的类型为“text/plain”,此外,它通常还附加编码的信息。在Mac OS X出现前,当Resource fork指定某一个文件的类型为“TEXT”时,Mac OS就认为这个文件是文本文件。在Windows中

使用多线程的准备知识

旧巷老猫 提交于 2019-12-21 07:21:47
一、为什么要使用多线程? 【使计算机所有资源在执行任务的时候能够全部利用上,以提升计算机资源利用率的方式来提升系统执行效率】   CPU的单核运行速度由于硬件技术问题已经遇到瓶颈,而概念性的“光脑”貌似离我们还很遥远,现在的计算机性能提升方向是向多核发展。多核同时工作,协同完成任务。大家熟知的神威·太湖之光超级计算机总共使用了40960颗处理器,总计拥有10649600颗核心、1.31PB内存。即使是目前市场上的主流家用电脑也一般达到四核心八线程的配置标准。那么对于这些多核的CPU, 在开发软件的时候就不得不考虑如何充分利用上每一个核的性能,以至于使系统运行的效率更高。 二、CPU是执行的是线程任务还是进程任务? 【CPU执行的是线程中定义的任务】 进程是对内存资源的抽象,线程是对执行任务的抽象。 CPU执行的是线程任务 ,和进程没有任何关系。所以, CPU中的核在任意时间点只能执行某一个线程的任务 ,具体执行哪个线程就要看操作系统的任务调度策略。 在单核多线程任务中,操作系统会把CPU资源按照时间片划分,根据线程的优先级选择线程进行执行任 务。 三、 程序中线程的数量控制在核数的1~2倍对吗? 【不对!】 左图为工作时win10 四核八线程 线程数: 2094。右图为闲置centos7 单核 线程数 :127 。 线程数量远远超过CPU核心数量的上百倍 。 所以在开发程序过程中