C++小记
extern 可解释为:可被外部引用的
const 将一个对象转化为常量。常量被定义后不能被修改,所以const必须被初始化
enum 枚举。每个enum都定义了一种唯一的类型。枚举成员起始值默认为0,默认自增1。类型为整形,不能改变枚举成员的值。枚举成员本身就是一个常量表达式,所以可以用于常量表达式的任何地方。
枚举类型的对象的赋值和初始化只能通过其枚举成员或同一枚举类型的其它成员来进行。
int (*p2)[10] = new int[2][10];
可以理解为 定义了一个指针p2,类型为int (*)[10]。即定义了一个指向了int[10]一维数组的指针
vector,C++模板库中用于处理数据和算法。被称为容器。能够存储任意类型的动态数组。(类似于java的list)
>> 和 << 运算:
>>是指右移运算符,将一个数的二进制位右移若干位。确切的位数依运算符后的正整数而定。移到右端的低位被舍弃。
而<<则为左移运算符,将一个数的二进制位左移若干位。移到左端的高位被舍弃,右端补0。
#include:C++预处理器(preprocessor)
vector是同一种类型的对象的集合,相当于对象数组。我们把它称为容器。
#include <vector>
using std::vector;
vector是一个类模版(class template)。
vector<int> ivec;//vector声明方法
要注意,vector不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector类型的每一种都指定了其保存元素的类型。
因此,vector<int>和vector<string>都是数据类型。
初始化:
vector<T> v1; //vector保存类型为T的对象。默认构造函数v1为空
vector<T> v2(v1); //v2是v1的一个副本
vector<T> v3(n,i); //v3包含n个值为i的元素
vector<T> v4(n); //v4含有初始化的元素的n个副本
迭代器:iterator;除了下标访问,另一种访问vector元素的方法。是一种检查容器内元素并遍历元素的数据类型。
注意vector下标操作只能读不能写!
定义:vector<T>::iterator iter;
const_interator类型:只能读取容器内元素,但不能改变其值。
而const迭代器:
const vector<T>::iterator iter = v1.begin();//则必须初始化。
迭代器常量本身的值不能修改,初始化之后,不能再指向其他元素。即用于需要指向固定元素的迭代器。
v.empty()
v.size()
v.push_back()
关于标准库:bitset类型
#include <bitset>
using std::bitset;
关于初始化:
bitset<n> bit; //初始n位二进制数,都为0
bitset<n> bit(u); //u为unsigned long类型数
bitset<n> bit();
bitset<n> bit(s,pos,n) //截取s二进制位从pos开始后的n位
方法:
bit.any()
bit.none()
bit.count()
bit.to_ulong()
bit.to_string()
bit.set()
bit.set(pos)
bit.reset()
bit.reset(pos)
bit.flip()
bit.flip(pos)
bit[pos]