c++

char类型最大值不能超过256,因其只能表示8位二进制
即 char=256;将会溢出。


  使用复数:
 如:#include <complex>
     complex<double> a;
     complex<double> b;
     complec<double> c;
     c=a*b+a/b;
  也就是说复数可以像一般的类型一样使用,且可以用一个算术类型给其赋值。
 如: double dval=3.14159;
      complex<double> comp=dval;
  但用复数对算术类型进行赋值时,需指明用哪一部分: 
     double re=comp.real();
     double im=comp.imag();//其中comp是一个复数
   c++支持复数的输入和输出,复数输出是一个由逗号分隔的序列对,第一个值为实部,
第二个值为虚部
 如:complex<double> complex0(3.14159,-2.171);
     cout<<complex0<<endl;
         输出结果为:(3.14159,-2.171)
   复数支持的其他操作有:sqrt()、abs()、polar()、sin()、cos()、tan()、exp()、log()
log10()、 pow() 。

下面代码实现了复数中的运算符(++)重载
 e complex<double>&
  operator++(complex<double> &cval)
 {
  cval=cval+complex<double>(1);
  return cval;
 }

 void main()
 {
  complex<double> cval(4.0, 1.0);
  cout<<cval<<endl;
  ++cval;
  cout<<cval<<endl;
 }

   sizeof操作符
    返回类型为size_t,这是一种与机器相关的typedef定义,可以在cstddef头文件中找到
它的定义。如:
 #include <cstddef>
 int ia[] = { 0, 1, 2 };
 //sizeof返回整个数组的大小
 size_t array_size = sizeof ia;
 //sizeof返回int类型的大小
 size_t element_size = array_size / sizeof( int );

    结果:sizeof指示ia的长度为12字节,是整个数组的字节长度。即3个整型。
 
 int *pi=new int[3];
 size_t pointer_size = sizeof ( pi );
    sizeof(pi)返的值是指向int型的指针的字节长度,而不是pi指向的数组的长度。
 sizeof(char)在所有的C++实现中都是1


   vector容器类型
 vector类是随标准c++引入的标准库的一部分。其对应的头文件是:#include <vector>
 使用实例:
     1、定义一个已经长度的vector:
  vector< int > ivec( 10 );
  与如下定义一个包含十个元素的内置数组相似:
  int ia[ 10 ];
      2、可用下标操作访问vector的元素,与访问内置数组的元素方式一样。
      如:void simplt_example()
  {
      const int elem_size=10;
      vector< int > ivec( elem_size );
      int ia[ elem_size ];
      for(int ix = 0; ix < elem_size; ++ix)
   ia[ ix ]=ivec[ ix ];
  }
       3、可用size()查询vector大小,用empty()测试是否为空。如:
  void print_vector( vector<int> ivec)
  {
      if ( ivec.empty() )
   return;
      for( int ix = 0; ix < ivec.size(); ++ix )
   cout<<ivec[ ix ]<<' ';
  }
       4、对元素进行显式的初始值来完成初始化。如:
      vector< int > ivec( 10, -1 );
  表示:定义了ivec,它包含十个int型的元素,每个元素都被初始化为-1
  注:它不能像初始化数组一样对其进行初始化。
  但可以用一个已有数组的全部或一部分进行初始化。
  如:int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 };
      //把ia的6个元素拷贝到ivec中
      vector< int > ivec( ia, ia+6 );
     //拷贝3个元素:ia[2], ia[3], ia[4]
     vector< int > ivec( &ia[2], &ia[5] );

       5、与数组不同,vector可以被另一个vector初始化,或被赋给另一个vector。
       如:vector< string > svec;
    void init_and_assign()
    {//用另一个vector初始化一个vector
   vector< string > user_names( svec );
     //.....
     //把一个vector拷贝给另一个vector
   svec = user_names;


     volatile限定修饰符
 当一个对象的值可能会在编译器的控制或监测之外被改变时,如一个被系统时钟更新
的变量,则该对象应该声明为volatile。这样可以提示编译器,该对象的值可能在编译器未监
测到的情况下被改变。因此编译器不能武断地对引用这些对象的代码作优化处理。
 使用方法同const
 如:volatile int display_register;


    pair类型
 pair类也是标准库的一部分,可以在单个对象内部把相同类型或不同类型的两个值
关联起来。所需要的头文件:#include <utility>
 如:pair< string, string > author( "James", "Joyce" );
 创建一个pair对象author,包含两个字符串,分别初始化为××,××
 两个成员访问符号:first ,second
    则:string aa=author.first;  string bb=author.second;
  则aa就是它的第一个元素,bb就是第二个元素。

   bitset操作:
 test(pos)       pos位是否为1            a.test(4)
 any()         任意位是否为1         a.any()
 none()         是否没有位为1  a.none()
 count()  值为1的位的个数  a.count()
 size()  位元素的个数  a.size()
 [pos]  访问pos位  a[4]
 flip()  翻转所有的位  a.flip()
 flip(pos) 翻转pos位  a.flip(4)
 set()  将所有位置1  a.set()
 set(pos) 将pos置1  a.set(4)
 reset()  将所有位置0  a.reset()
 reset(pos) 将pos位置0  a.reset(4)

   显式类型转换:
 显示转换符号的一般形式为:cast-name< type >(expression);
 cast-name是static_cast、const_cast、dynamic_cast、reinterpret_cast之一。
 如:const_cast< int >(str);
 隐式执行的任何类型转换都可以由static_cast显式完成
 如:double d = 97.0;
     char ch=static_cast< char >( d );  

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值