C++步步为营

C++---CHAPTER 3 : CONTAINER

2019-07-12  本文已影响0人  世界上的一道风
*iter 返回迭代器iter所指元素的引用
iter->mem   等价于 (*iter).mem ,解引用iter并获取该元素的名为mem的成员
++iter 令iter指示容器中的下一个元素
--iter 零iter指示容器中的上一个元素
iter1 == iter2   iter1 != iter2  判断两个迭代器是否相等
string:: const_iterator it4;  //it4只能读字符,不能写字符

const vector<int> cv;
auto it2 = cv.begin();  // it2的类型是vector<int>::const_iterator
auto mid = vi.begin() + vi.size() / 2

if (it < mid)   // 迭代器的比较,返回difference_type类型的有符号整型数

数组

定义数组必须指定数组的类型,不允许用auto关键字由初始值的列表推断类型。
vector一样,数组元素应为对象,不存在引用的数组。

不允许将数组的内容拷贝给其他数组作为初始值,也不能用数组为其他数组赋值:

int a[] = {0, 1, 2};
int a2[] = a;  //错误
a2 = a;   // 错误

复杂的数组声明:

int (*Parray)[10] = &arr; // Parray指向一个含有10个整数的数组
int (&arrRef)[10] = arr; // arrRef引用一个含有10个整数的数组
int *(&arry)[10] = ptrs; // arry是一个引用,arry引用的对象时一个大小为10的数组,数组的类型是指向int的指针。
string *p2 = nums; // 等价于p2 = &nums[0]

使用auto推断数组得到的类型是指针,但是用关键字decltype关键字时上述转换不会发生:

int ia = {0,1,2,3,4,5,6,7,8,9};
auto ia2(ia); // ia2是一个整型指针,指向ia的第一个元素
decltype (ia) ia3 ={0,1,2,3,4,5,6,7,8,9}; //ia3是一个含有10个整数的数组 
int *e = &ia[10]; //指向不存在的尾元素下一位置的指针
int *beg = begin(ia);
int *last = end(ia);
上一篇下一篇

猜你喜欢

热点阅读