STL之vector
STL之vector 向量
vector是一个多功能的、能够操作多种数据结构和算法的模板类和函数库。
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
向量可将元素存储在连续的内存位置中,并在运行时根据需要分配内存。
vector和array的区别
数组array遵循静态方法,这意味着在运行时不能更改其大小,而vector实现动态数组意味着在添加元素时会自动调整其大小。
vector基础使用
1 |
|
vector的常用成员函数
- at(idx) : 传回索引idx所指向的数据,如果idx越界,抛出out_of_range;
- back() : 返回最后一个元素,不检查这个数据是否存在;
- front() : 返回第一个元素,不检查这个数据是否存在;
- swap() : 交换两个vector;
- push_back() : 在vector的末尾追加一个元素;
- pop_back() : 在vector中删除最后一个元素;
- empty() : 判断vector是否为空,为空则返回true;
- insert() : 在指定位置插入新元素;
- erase() : 删除指定的元素???
- resize() : 修改vector的大小;
- clear() : 从vector中删除所有元素;
- size() : 返回vector的元素个数;
- capacity() : 返回vector在不重新分配内存的情况下,当前最多可以容纳的元素个数;
- assige() : 将新值分配给vector;
- operator=() : 将新值分配给vector容器;
- operator : 访问指定的元素;
- end() : 返回最末尾元素的迭代器;
- emplace() : 在位置pos之前,插入一个新的元素;
- emplace_back() : 在末尾插入一个元素;
- rend() : 指向vector的第一个元素之前的元素;
- rbegin() : 指向vector的最后一个元素;
- begin() : 返回第一个元素的迭代器;
- max_size() : 返回vector所能容纳的元素的最大数量(上限值);
- cend() : 指向vector中的last-last-element;
- cbegin() : 指向vector的第一个元素;
- crbegin() : 指向vector的最后一个字符;
- crend() : 指向vector第一个元素之前的元素;???
- data() : 将vector的数据写入array;
- shrink_to_fit() : 减小vector的容量,使它等于vector的大小;
val = v1.at(idx)
返回索引位置的值,和v1[idx]
一样;
栗子:
1 |
|
val = v1.back()
返回最后一个元素,不管存在不存在,v1.end()
考虑下差别;
v1.back()
返回最后一个元素;v1.front()
返回第一个元素;
栗子:
1 |
|
v1.swap(v2)
交换两个vector中的元素;
如果两个vector的size不一样,会自动扩容,因为vector的长度可变。
栗子:
1 |
|
