C++ Primer笔记(5)

来源:互联网 发布:郑爽整了哪些部位知乎 编辑:程序博客网 时间:2024/06/06 09:29
class Sales_item
{
public:
Sales_item(void);
~Sales_item(void);
private:
string isbn;
unsigned units_sold;
double revenue;
};
这些操作和数据是类的一部分,也称为类的成员。
操作称为成员函数,数据则称为数据成员。
定义变量和定义数据成员存在非常重要的区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能指定该数据成员的名字和类型。类不是在类的定义里定义数据成员时初始化数据成员,而是通过称为构造函数的特殊成员函数控制初始化。

使用class关键字来定义类,那么默认任何成员都隐式指定为private,如果使用struct来定义,默认是public。
当进行string对象和字符串面值混合连接操作时,+操作符左右操作数必须至少有一个string类型。
vector类模板而非类类型
vector<T> v1;-----------------------vector保存类型为T的对象。
vector<T> v2(v1);------------------ v2是v1的一个副本。
vector<T> v3(n,i);------------------ v3包含n个值为i的元素。
vector<T> v4(n);--------------------v4含有值初始化的元素的n个副本。
vector对象(以及其他标准容器对象)的重要属性就在于可以在运行时高效地添加元素。
C++程序员习惯于优先选用!=而不是<来编写循环判断条件。
迭代器是一个检查容器内元素并遍历元素的数据类型。
迭代器提供了比下标操作更通用化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。
vector<int>::iterator iter;
const_iterator只能用于读取容器内元素,但不能改变其值。
iter1-iter2两个迭代器之间的距离

标准库bitset类--------简化了位集的处理
#include <bitset>
using std::bitset
bitset<32> bitvec;   //32bits,all zero
bitset<n> b;//b有n位,每位都为0
bitset<n> b(u);//b是unsigned long型u的一个副本
bitset<n> b(s);//b是string对象s中含有的位串的副本
bitset<n> b(s,pos,n);//b是s中从位置pos开始的n个位副本
用string对象初始化bitset对象
string strval("1100");
bitset<32> bitvec4(strval);//0,1位为0;2,3位为1。

string对象和bitset对象之间是反向转化的:string对象的最右边字符用来初始肥bitset对象的低阶位。


原创粉丝点击