vector容器 ============ **序列式容器** 1.常用的数据结构(容器)及分类:数组,链表,树,栈,队列.容器可以分为 ``序列式`` 和 ``关联式`` 两种 2.序列式容器:序列式容器的元素排列的顺序与元素本身无关,其先后顺序由元素添加到容器中的顺序决定 3.常用的序列式容器:C++的STL(标准模板库),包括vector list queue dequeue(双向队列) stack priority_queue(优先队列) .. note:: vector和数组的区别: 1.数组是静态的,长度不可改变,而vector可以动态扩展,增加长度 2.数组通常存储在栈区或者bss段,而vector中的数据则存储在堆上 vector容器以类模板vector (T表示存储元素的类型)的形式定义在头文件中 创建vector容器 --------------- :: #include //此时这是一个空的vector容器,容器中没有元素,所以也没有分配空间.当添加一个元素(如push_back函数),vector会自动分配内存 std::vector value; //reserve函数可以增加容器的容量 value.reserve(20); //创建容器并赋初始值 std::vector primes {2, 4, 5, 8, 10}; //创建时指定个数, ()和{} 是有区别的,()指定数量,{}指定值 std::vector values(20); //创建容器,并全部赋值为1.5 std::vector values(20, 1.5); vector成员函数 ---------------- =========================== ==================================================================================== 函数成员 函数功能 --------------------------- ------------------------------------------------------------------------------------ begine() 返回指向容器中第一个元素的迭代器 end() 返回容器最后一个元素后面一个位置的迭代器 rbegin() 返回指向最后一个元素的迭代器 rend() 返回指向第一个元素前面一个位置的迭代器 cbegin() 相比begin()增加const属性,不能用于修改元素 cend() crbegin() crend() size() 返回实际元素个数 max_size() 返回元素个数的最大值,这通常是一个很大的值,如2^32-1 resize() 改变实际元素的个数 capacity() 返回当前容量(内存) empty() 判断容器中是否有元素,若无元素,返回true reserve() 增加容器的容量 shrink_to_fit() 将内存减少到等于当前元素实际使用的大小 operator[] 重载了[]运算符,可以向访问数组中元素那样,通过下表访问vector中的值 at() 使用经过边界检查的索引反问元素 front() 返回第一个元素的引用 back() 返回最后一个元素的引用 data() 返回指向容器中第一个元素的指针 assign() 用新元素替换原有内容 push_back() 在序列的尾部添加一个元素 pop_back() 移除序列尾部的元素 insert() 在指定的位置插入一个或多个元素 erase() 移除一个或一段元素 clear() 移除所有元素,容器大小变为0 swap() 交换两个容器的所有元素 =========================== ====================================================================================