这些是我刚学习C++的笔记,拿出来与大家分享,希望大家更容易入门!
1、 运算符<<(送出)用作输出运算符;cout是标准输出流。运算符>>(取入)用作输入运算;cin是标准的输入流。
2、 输出:一个输出表达式的结果本身还可以用于进一步的输出。
void h2(int i)
{
Cout<<”the value of I is”<
3、 输入:Void h3(int i)
{
Cin>>x;
Getline(cin,str);
}4、 迭代器是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。迭代器修改了常规指针接口,所谓迭代器是一种概念上的抽像:那些行为上像迭代器的东西都可以叫做迭代器。然而迭代器有很多不同的能力,他可以把抽象的容器和同用的算法有机的结合起来。迭代器提供一些基本操作符:*、++、==、!=、=。这些操作和c/c++操作array元素时的指针接口一致。不同之处在于迭代器是个所谓的复杂指针。具有遍历复杂数据结构的能力。其下层运行机制取决于其所遍历的数据结构。因此每一种容器型别都必须提供自己的迭代器。事实上每一种容器都将其迭代器以嵌套的方式定义域内部。因此各种迭代器的接口相同,型号却不同。这直接导出了泛型程序设计概念:所有操作行为都是用相同接口虽然他们的型别不同。功能迭代器使开发人员能够在类或结构中支持foreach迭代,而不必整个实现IEnumerable或者IEnumerator接口。只需提供一个迭代器,即可遍历类中的数据结构。当编译器检测到迭代器时,将自动生成IEnumerable接口或者IEnumerator接口的Current,MoveNext和Dispose方法。特点1.迭代器是可以返回相同类型值的有序序列的一段代码;2.迭代器可用作方法、运算符或get访问器的代码体;3.迭代器代码使用yieldreturn语句依次返回每个元素,yield break将终止迭代;4.可以在类中实现多个迭代器,每个迭代器都必须像任何类成员一样有惟一的名称,并且可以在foreach语句中被客户端,代码调用如下所示:foreach(int x in SimpleClass.Iterator2){};5.迭代器的返回类型必须为IEnumerable和IEnumerator中的任意一种;6.迭代器是产生值的有序序列的一个语句块,不同于有一个 或多个yield语句存在的常规语句块;7.迭代器不是一种成员,它只是实现函数成员的方式,理解这一点是很重要的,一个通过迭代器实现的成员,可以被其他可能或不可能通过迭代器实现的成员覆盖和重载;8.迭代器块在C#语法中不是独特的元素,它们在几个方面受到限制,并且主要作用在函数成员声明的语义上,它们在语法上只是语句块而已;9.yield关键字用于指定返回的值。到达yieldreturn语句时,会保存当前位置。下次调用迭代器时将从此位置重新开始执行。 迭代器对集合类特别有用,它提供一种简单的方法来迭代不常用的数据结构(如二进制树)。简介迭代器是一种检查容器内元素并遍历元素的数据类型。 5、 枚举(enum)枚举在C/C++/c#中,是一个被命名的整型常数的集合, 枚举在日常生活中很常见。例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY, 就是一个枚举。枚举的说明与结构和联合相似, 其形式为:enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
} 枚举变量;如果枚举没有初始化, 即省掉”=整型常数”时, 则从第一个标识符开始, 顺次赋给标识符0, 1, 2, …。但当枚举中的某个成员赋值后, 其后的成员按依次加1的规则确定其值。例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。enum Num{x1, x2, x3, x4}x;当定义改变成:enum Num
{
x1,
x2=0,
x3=50,
x4
}x;则x1=0, x2=0, x3=50, x4=51注意:1. 枚举中每个成员(标识符)结束符是”,”, 不是”;”, 最后一个成员可省略“,”。2. 初始化时可以赋负数, 以后的标识符仍依次加1。3. 枚举变量只能取枚举说明结构中的某个标识符常量。例如:enum Num
{
x1=5,
x2,
x3,
x4
};
enum Num x=x3;此时, 枚举变量x实际上是7。枚举类型变量的赋值和使用枚举类型在使用中有以下规定:1.枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。2. 枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1, …,sat值为6。main(){
enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=tue;
printf("%d,%d,%d",a,b,c);
}只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: a=sun;b=mon; 是正确的。而: a=0;b=1; 是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是字符常量也不是字符串常量, 使用时不要加单、双引号。main(){
enum body
{ a,b,c,d } month[31],j;
int i;
j=a;
for(i=1;i<=30;i++){
month[i]=j;
j++;
if (j>d) j=a;
}
for(i=1;i<=30;i++){
switch(month[i])
{
case a:printf(" %2d %c\t",i,'a'); break;
case b:printf(" %2d %c\t",i,'b'); break;
case c:printf(" %2d %c\t",i,'c'); break;
case d:printf(" %2d %c\t",i,'d'); break;
default:break;
}
}
printf("\n");
}10个数字,任意取出不相等的5个数字,
谁还记得这个算法的公式
用java script有什么好的计算方法
m n*(n-1)*(n-2)*...*(n-m+1) n!
C = --------------------------------------------- = --------------------------
n m*(m-1)*(m-2)*...*3*2*1 m!*(n-m)!这个是公式,但是对枚举作用不大,还是要遍历循环才行.这就需要一个好的算法6、 typedeftypedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 7、 大小C++对象的大小事用char的大小的倍数表示的。按照定义char的大小为1,。一个对象或类型的大小可以用sizeof运算符得到。类型 大