std::vector
是 C++ 标准库中的一个动态数组容器,属于序列容器的一种。它能够存储一组相同类型的元素,并且支持动态调整大小。std::vector
提供了高效的随机访问、动态扩展和收缩功能,是 C++ 中最常用的容器之一。
动态数组:std::vector
在内部使用动态分配的数组来存储元素,因此它可以在运行时动态调整大小。
连续存储:元素在内存中是连续存储的,这使得 std::vector
支持高效的随机访问。
自动内存管理:std::vector
会自动管理内存,当元素数量增加时,它会自动分配更多的内存;当元素数量减少时,它会释放多余的内存。
丰富的接口:std::vector
提供了丰富的成员函数和操作符,方便进行元素的插入、删除、访问等操作。
1.vector()
:默认构造函数,创建一个空的 vector
。
2.vector(size_type n)
:创建一个包含 n
个默认初始化元素的 vector
。
3.vector(size_type n, const T& value)
:创建一个包含 n
个值为 value
的元素的 vector
。
4.vector(const vector& other)
:拷贝构造函数,创建一个与 other
相同的 vector
。
5.vector(vector&& other)
:移动构造函数,创建一个从 other
移动过来的 vector
。
6.vector(initializer_list
:使用初始化列表创建 vector
。
1.vector& operator=(const vector& other)
:拷贝赋值操作符。
2.vector& operator=(vector&& other)
:移动赋值操作符。
3.vector& operator=(initializer_list
:使用初始化列表赋值。
1.reference operator[](size_type pos)
:返回指定位置 pos
的元素的引用,不进行边界检查。
2.const_reference operator[](size_type pos) const
:返回指定位置 pos
的元素的常量引用,不进行边界检查。
3.reference at(size_type pos)
:返回指定位置 pos
的元素的引用,进行边界检查,如果 pos
超出范围则抛出 std::out_of_range
异常。
4.const_reference at(size_type pos) const
:返回指定位置 pos
的元素的常量引用,进行边界检查。
5.reference front()
:返回第一个元素的引用。
6.const_reference front() const
:返回第一个元素的常量引用。
7.reference back()
:返回最后一个元素的引用。
8.const_reference back() const
:返回最后一个元素的常量引用。
9.T* data()
:返回指向底层数组的指针。
10const T* data() const
:返回指向底层数组的常量指针。
1.bool empty() const
:检查 vector
是否为空。
2.size_type size() const
:返回 vector
中元素的数量。
3.size_type max_size() const
:返回 vector
可以容纳的最大元素数量。
4.void reserve(size_type new_cap)
:预留至少 new_cap
的空间,以减少后续插入操作的内存分配次数。
5.size_type capacity() const
:返回当前 vector
分配的内存空间大小。
6.void shrink_to_fit()
:请求移除未使用的容量,减少 vector
的内存占用。
1.void clear()
:清空 vector
中的所有元素。
2.iterator insert(const_iterator pos, const T& value)
:在指定位置 pos
插入一个元素 value
。
3.iterator insert(const_iterator pos, size_type count, const T& value)
:在指定位置 pos
插入 count
个元素 value
。
4.iterator insert(const_iterator pos, InputIt first, InputIt last)
:在指定位置 pos
插入范围 [first, last)
内的元素。
5.iterator insert(const_iterator pos, initializer_list
:在指定位置 pos
插入初始化列表 init
中的元素。
6.iterator erase(const_iterator pos)
:删除指定位置 pos
的元素。
7.iterator erase(const_iterator first, const_iterator last)
:删除范围 [first, last)
内的元素。
8.void push_back(const T& value)
:在 vector
的末尾添加一个元素 value
。
9.void push_back(T&& value)
:在 vector
的末尾添加一个元素 value
(移动语义)。
10.void pop_back()
:删除 vector
的最后一个元素。
11.void resize(size_type count)
:将 vector
的大小调整为 count
,如果 count
大于当前大小,则新元素将进行默认初始化。
12.void resize(size_type count, const T& value)
:将 vector
的大小调整为 count
,如果 count
大于当前大小,则新元素将初始化为 value
。
13.void swap(vector& other)
:交换两个 vector
的内容。
1.iterator begin()
:返回指向第一个元素的迭代器。
2.const_iterator begin() const
:返回指向第一个元素的常量迭代器。
3.iterator end()
:返回指向最后一个元素之后位置的迭代器。
4.const_iterator end() const
:返回指向最后一个元素之后位置的常量迭代器。
5.reverse_iterator rbegin()
:返回指向最后一个元素的反向迭代器。
6.const_reverse_iterator rbegin() const
:返回指向最后一个元素的常量反向迭代器。
7.reverse_iterator rend()
:返回指向第一个元素之前位置的反向迭代器。
8.const_reverse_iterator rend() const
:返回指向第一个元素之前位置的常量反向迭代器。
#include
#include
int main() {
// 创建一个空的 vector
std::vector vec;
// 添加元素
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
// 访问元素
std::cout << "First element: " << vec[0] << std::endl;
std::cout << "Second element: " << vec.at(1) << std::endl;
// 遍历 vector
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
// 删除最后一个元素
vec.pop_back();
// 插入元素
vec.insert(vec.begin() + 1, 15);
// 再次遍历 vector
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
// 清空 vector
vec.clear();
// 检查是否为空
if (vec.empty()) {
std::cout << "Vector is empty." << std::endl;
}
return 0;
}