1,C++Primer初级: 预处理(E查看)->编译(S查看)->连接 13_枚举:可以尽可能多用枚举,多个const变量,可以用枚举去做; string name("aaa"); //定义,初始化 string::size_type size = name.size(); //字符个数,保证可以获得对应的大小,int size = name.size(); 这个不安全 name.empty() 判断是否为空 字符串相加,是表示将两个连接起来,但是两个不能都是字符串字面值 例如 name+name2,但是不能“aa”+“bb” ispunct(name[i])判断某个字符是否是标点符号(头文件cctype) 字符串的输入,不能用cin要用getline,然后用for循环,检查输入的字符串的每一个字符 vector 动态数组,其实是个类类型,一般可以替换到普通的数组。 常用里面的empty(),vector<int>::size_type, v.size(),和v.push_back(); vector begin(),返回一个迭代器,vector<int>::iterator iter = v.begin; 迭代器实质上是一个指针,所以可以给该值赋值*iter=9; 一般用迭代器替代下标,例如用vector<int>::size_type idx=0; 可以for(vector<int>::iterator i=v.begin();i!=v.end();i++){ cout <<"迭代器 "<<*i<<endl;//这样可以通过*i获得vector v中的元素;即迭代器是个指针,这比下标取元素简单多了,尽量多使用迭代器方式,少用下标形式取元素 } 常迭代器与非常迭代器,区别为,不可以与可以通过迭代你修改数据 例如 vector<int>::const_iterator i = v.begin(); 常迭代器常用来读取数值,不用常迭代器修改数据; bitset<32> a(156) 将156按二进制存储,到32位大小空间中。 a.any(); 判断是否有1,a.none()判断没有一个1,a.count() a有几个1.a.size()获得a的大小;a.set(index) 设置某位为1。或者直接下标写法,a[index]; a.set() 设置所有的为1. reset是变为0; void*指针,是万能指针,可以指向任意的类型。但是这种指针不能通过其操作对象。 常指针才能指向常对象;普通指针不行,常指针必须初始化。常指针(常用来传递参数,防止修改参数)可以指向非常对象,这样之后,不能通过指针来修改其对象的值,也不能修改其指向再指向其他的对象。 举例: #typedef string *pstring; const pstring cpst; 与string *const cpst1;等同(常指针,指向字符串,必须初始化),与const string *cpst2;不同,指向常字符串指针,不用必须初始化 int a[]={1, 2, 3, 6, 5, 4} int *ip1=a; //指针可以可以看做数组的迭代器。 int *ip2 = a+4; ptrdiff_t a=ip2-ip1;得到地址差。即a=4;相差四个数 引用声明时,必须初始化。指针可以不用 c风格的字符串,必须用 结束。 char a1[] = {'a', 'b', '