概述
vector
是一种泛型类(Generic Class)。这种类需要指定两种类型,其中一个是容器自身的类型(这里是 vector
),另一个是容器内元素的类型(上例中就是 int
)vector
的内部空间可按需扩大:当有更多项被放入时,它就会为这些项提供足够的空间vector
会记录当前保存的项数,可以用 size()
方法读取vector
内部项的顺序即为项的插入顺序,因此可按相同的顺序检索构造函数(Constructors)
vector<Elem> c;
vector<Elem> c1(c2);
获取大小
V.size()
:获取当前容器内项数(C++ 11 前为线性时间)V.empty()
:是否为空,相比 .size()
速度更快(常数时间)V.capacity()
:返回当前分配的容量可以存放的元素数V.reverse(size_t n)
:预留至少 n 个元素的存储空间V.resize(size_t n)
:将容器的项数调整为 n迭代器
V.begin()
:获取指向第一个位置的迭代器V.end()
:获取指向最后一个位置的迭代器V.cbegin()
:获取指向第一个位置的常量迭代器(不能用于修改元素,更安全)V.cend()
:获取指向最后一个位置的常量迭代器元素访问
V.at(index)
:该方法会进行边界检查,如果越界,编译器会抛出异常,更加安全V[index]
:该方法不会做边界检查,如果越界的话,则行为不可预测,是未定义的行为(Undefined Behaviour),因此速度快但不安全V.front()
:获取第一个元素的引用V.back()
:获取最后一个元素的引用int main()
{
list<string> s;
s.push_back("hello");
s.push_back("world");
list<string>::iterator p;
for(p = s.begin(); p != s.end(); p++)
cout << *p <<" ";
}
添加 / 删除 / 查找
V.push_back(e)
V.pop_back()
V.insert(pos, e)
,其中 pos
是迭代器变量V.clear()
:清空向量内所有元素find(first, last, item)
,其中 first
、last
是迭代器变量,返回的是位于 first
和 last
之间的迭代器,如果没有找到的话则返回 last
V.erase(pos)
:删除指定位置的元素,其中 pos
是迭代器变量其他
== != < > <= >=
V.swap(v2)
:交换 V
和 v2
操作
x.front()
x.back()
x.push_back(item)
x.push_front(item)
x.pop_back()
x.pop_front()
x.erase(pos1, pos2)
x.count()
x.reverse(size)
x.resize()
列表元素大小不确定,因此使用迭代器对列表遍历时,只能使用 ==
或 !=
比较运算符
C++ 无法为列表预留空间,所以列表没有 capacity()
函数