• 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
     
     
     
     
  • 相关阅读:
    洛谷 P1278 单词游戏 【状压dp】
    洛谷 P1854 花店橱窗布置 【dp】
    洛谷 P2258 子矩阵
    洛谷 P3102 [USACO14FEB]秘密代码Secret Code 【区间dp】
    洛谷U14200 Changing 题解 【杨辉三角】
    洛谷P3933 Chtholly Nota Seniorious 【二分 + 贪心 + 矩阵旋转】
    P3932 浮游大陆的68号岛 【线段树】
    洛谷P1273 有线电视网 【树上分组背包】
    NOI2013 矩阵游戏 【数论】
    洛谷P1268 树的重量 【构造 + 枚举】
  • 原文地址:https://www.cnblogs.com/arctanx/p/5227775.html
Copyright © 2020-2023  润新知