zoukankan      html  css  js  c++  java
  • 《C++ Primer》 第03章 [ 标准库类型 ]

    第03章:标准库类型
           C++还定义了一个内容丰富的抽象数据类型标准库,
    如 : string      大小可变的字符串
              vector     大小可变的集合
              bitset      提供了抽象方法操作位集合
    第一节:命名空间using声明
    @ 学习摘录024:
    ——一旦使用了using声明,我们就可以直接引用名字,而不需要再引用该名字的命名空间:
    ——using std::cin;
    ——using std::string;
    @ 学习摘录025:
    ——如果在头文件中放置using声明,就相当于在包含该文件的每个程序中都放置了同一个using声明,不论该程序是否需要using声明。
    @ 学习摘录026:
    ——通常头文件中应该只定义”确实必要的东西”。请养成这个习惯。
    摘录有想026:
    ——书上建议少用using namespace std 这样的风格,以后写程序就尽量用using声明吧,少用using编译指令。
    第二节:标准库string类型
    @ 学习摘录027:string操作
    ——s.empty() // 检查字符是否为空,bool类型
    ——s.size(); // 返回s中字符的个数
    ——s[n];  // 返回s中位置为n的字符,位置从0开始计数
    @ 学习摘录028:
    ——size操作返回的是string::size_type类型的值。String类类型和许多其他库类型都定义了一些配套类型(companion type)。通过这些配套类型,库类型的使用就能与机器无关(machine-independent)。Size_type就是这些配套类型中的一种。它定义为unsigned型(unsigned int 或unsigned long)具有相同的含义,而且可以保证足够大能够存储任意string对象的长度。
    摘录有想028:
    ——写程序时不要把size的返回值赋给一个int变量了。 哦! 哦! 哦!
    @ 学习摘录029:
    ——如在有16位int型的机器上,int类型变量最大只能表示32767个字符的string对象,而能容纳一个文件内容的string对象轻易就会超过这个数字。因此,为了避免溢出,保存一个string对象size的最安全的方法就是使用标准库类型string::size_type
    摘录有想030:
    ——在比较时需注意大小写了,想起以前cctype有一个用于转换字符的函数,把大写转为小写之类的功能可以很容易实现。
    @ 学习摘录031:
    ——string类型通过下标操作符([])来访问string对象中的单个字符。下标操作符需要一个 "size_type" 类型的值,来标明要访问字符的位置。这个下标中的值通常被称为“下标”或“索引(index)”。
    @ 学习摘录032:
    ——string对象的下标从0开始,而s[s.size() – 1]则表示s的最后一个字符。
    第三节:标准库vector类型
    @ 学习摘录033:
    ——虽然可以对给定元素个数的vector对象预先分配内存,但更有效的方法是先初始化一个空vector对象,然后再动态地增加元素。 
    @ 学习摘录034: 
    ——C++程序员习惯于优先选用 != 而不是 < 来编写循环判断条件
    @ 学习摘录035:  “注意”
    ——我们倾向于在每次循环中测试size的当前值,而不是进入循环前,存储size值的副本。调用size成员而不保存它返回的值,这反映了一种良好的编程习惯
    82P  安全的泛型编程 – 小读很好!
    第四节:迭代器简介。
    @ 学习摘录036:
    ——迭代器是一种检查容器内元素并遍历元素的数据类型。若一种类型支持一组确定的操作(这些操作可用来遍历容器内的元素并访问这些元素的值),称这种类型为迭代器。
    @ 学习摘录037:
    ——vector<int>::iterator iter = ivec.begin();
    ——由end操作返回的迭代器指向vector的“末端元素的下一个”,通常称为超出未端迭代器(off-the-end iterator),表明它指向了一个不存在的元素。如果vector为空,begin返回迭代器与end返回的迭代器相同。 哦!
    @ 学习摘录038:
    ——由end操作返回的迭代器并不指向vector中任何实际的元素,相反,它只是起一个“哨兵”(sentinel)的作用,表示我们已经处理完vector中所有的元素。
    @ 学习摘录039:
    ——迭代器类型可以使用解引用操作符(*操作符)来访问迭代器所指向的元素:*iter = 0;由于end返回的迭代器不指向任何元素,因此不能对它进行解引用或自增操作。
    @ 学习摘录040:
    ——使用const_iterator类型时,我们可以得到一个迭代器,它自身的值可以改变,但不能用来改变其指向的元素的值。可以对迭代器进行自增以及使用引用操作符来读取值,但不能对该元素值赋值。
  • 相关阅读:
    设计算法,根据输入的学生人数和成绩建立一个单链表,并累计成绩不及格的人数。
    git的使用,看这一篇就够啦!(包含github、码云、gitlab)
    设单链表的数据为互不相等的整数,建立一个单链表,并设计一个算法,找出单链表中元素值最大 的结点。
    “Failed to get convolution algorithm. This is probably because cuDNN failed to initialize”错误的解决办法
    回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文。
    怎么搭建一个5T的私有云盘
    基于大数据分析与可视化的疫情信息发布系统
    如何给oneindex网盘增加评论、密码查看、read me,头提示功能。
    解析原理:微信自动查找优惠券做返利机器人是怎么实现的
    【Swift】接入阿里云一键登录(源码,可以直接贴走)
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787186.html
Copyright © 2011-2022 走看看