zoukankan      html  css  js  c++  java
  • Chapter 3. Library Types

    1.命间空间的using声明

     
    声明using std::cin之后就可以直接用cin了。
     
     
    2.string类型
     
    字符串字面值和标准库string类型不是同一种类型。
     
    string line;
    cin>>line; //从标准输入空间里读一个串存储在line中。会忽略开头所有的空白,读取字符并存入line中直到遇见下一个空白。
    getline(cin , line);//从标准输入空间里读入一个串,只要遇到换行符就停止。假如开头是换行符,那么line将被置空。因此写入的内容可以含空格等但不能含换行符。
     
    string::size_type string::size(); 注意:string::size()函数返回的不是int型!
    为什么不用int型,这样设计的好处是什么?
    size_type其实是unsigned型,实际上它比int型大两倍,这样做能避免溢出。一些机器的int型太小了,最安全的就是用标准库类型string:size_type了,我们更倾向与写机器无关的代码。
     
    +操作符。左右必须至少要有一个是string类型的。
    string str1= "s" + str2;//正确
    string str2= "ss" + "ss" ;//错误
    string str3= str2 + "s" + "s ";//正确 因为操作符返回的是string类型,从左到右计算。
     
    string类型的下标操作返回的是左值,所以可以进行赋值操作。eg. s[0]=‘1';s[1]=‘2';
    下标操作符号里可以是一个整型返回值的表达式,类型最好是string::size_type。
     
    3.vector类型
     
    初始化vector<string> s(10), 假如保存的是类类型,那么初始化的时候会调用它的默认构造函数,假如是保存的是int,则全部初始化为0.
     
    遍历的时候,用iterator,还是用size()?
    因为vector是动态的,在遍历的时候难免会对里面的内容修改,这两种方法在碰到添加和删除的情况时都有需要注意的事情。
     
    4.iterator
     
    每一种标准容器都有它的迭代器。
     
    const_iterator类型的迭代器只能读取元素,不能修改
    迭代器可以计算,比如自增运算符,比如it+v.size()/2 这种效率取中间元素的效率,比起你循环的加到中间元素位置要快得多。
     
    5.bitset
    定义bitset<n> b b有n位,每一位都是0
     
    初始化 可以用unsigned long 或者string来初始化
    eg:bitset<32> bitvec1(0xffff);
    string str(“1100”);
    bitset<32> bitvec2(str); //字符串的右边会变成bitset类里的低位
     
    bitset类有一些实用的函数,需要用的时候可以查一查。
    常用的有
    bitvec.flip();// 全部取反 bitvec[0].flip();//第一位取反
    bitvec.to_ulong();//转换为unsigned long,太长的话会抛出运行时错误
    //输出二进制位
    bitset<32> bitvec(0xffff);
    cout<<“bitvec: "<<bitvec;
    结果:
    bitvec: 00000000000000001111111111111111
     
     
     
     
  • 相关阅读:
    classpath详解
    xml详解
    pojo、po、dto、dao、bo区别
    事务的四种隔离级别
    spring相关知识点易错
    Orm
    100+个Java项目视频教程+源码+笔记,项目经验不用愁了!
    使用TM1629A芯片驱动米字数码管
    关于安装airflow遇到的问题
    Semver(语义化版本号)扫盲
  • 原文地址:https://www.cnblogs.com/arctanx/p/5227775.html
Copyright © 2011-2022 走看看