doc/notebook/docs/C++/6.vector.md

83 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

1. **构造函数**
- `vector<T>`:创建一个空的向量,元素类型为 `T`
- `vector<T>(size_type count)`:创建包含 `count` 个默认构造的元素的向量。
- `vector<T>(size_type count, const T& value)`:创建包含 `count` 个值为 `value` 的元素的向量。
- `vector<T>(InputIterator first, InputIterator last)`:使用迭代器范围 `[first, last)` 中的元素创建向量。
2. **元素访问**
- `vector::operator[]`:通过索引访问元素。
- `vector::at(size_type pos)`:通过位置访问元素,如果越界会抛出 `std::out_of_range` 异常。
- `vector::front()`:返回第一个元素的引用。
- `vector::back()`:返回最后一个元素的引用。
- `vector::data()`:返回指向底层数据的指针。
3. **迭代器**
- `vector::begin()`:返回指向第一个元素的迭代器。
- `vector::end()`:返回指向最后一个元素后面位置的迭代器。
- `vector::rbegin()`:返回指向最后一个元素的逆向迭代器。
- `vector::rend()`:返回指向第一个元素前面位置的逆向迭代器。
4. **容量**
- `vector::size()`:返回向量中元素的数量。
- `vector::max_size()`:返回向量能容纳的最大元素数量。
- `vector::empty()`:检查向量是否为空。
- `vector::reserve(size_type new_cap)`:为向量预留至少能容纳 `new_cap` 个元素的空间。
- `vector::capacity()`:返回向量当前能容纳的元素数量。
5. **修改容器**
- `vector::push_back(const T& value)`:在向量末尾添加一个元素。
- `vector::pop_back()`:移除向量末尾的元素。
- `vector::insert(iterator pos, const T& value)`:在指定位置插入一个元素。
- `vector::erase(iterator pos)`:移除指定位置的元素。
- `vector::clear()`:清空向量中的所有元素。
6. **比较**
- `vector::operator==`、`vector::operator!=`、`vector::operator<`、`vector::operator<=`、`vector::operator>`、`vector::operator>=`:用于比较两个向量的操作符。
7. **其他操作**
- `vector::swap(vector& other)`:交换两个向量的内容。
- `vector::emplace_back(Args&&... args)`:在向量末尾构造一个元素。
- `vector::shrink_to_fit()`:将向量的容量调整为其当前元素数量。
```c++
#include <iostream>
#include <vector>
int main() {
// 创建一个空的整数向量
std::vector<int> numbers;
// 在向量末尾添加元素
numbers.push_back(10);
numbers.push_back(20);
numbers.push_back(30);
// 使用迭代器遍历向量并输出元素
std::cout << "Vector elements:";
for (auto it = numbers.begin(); it != numbers.end(); ++it) {
std::cout << " " << *it;
}
std::cout << std::endl;
// 访问向量的第一个和最后一个元素
std::cout << "First element: " << numbers.front() << std::endl;
std::cout << "Last element: " << numbers.back() << std::endl;
// 检查向量是否为空
std::cout << "Is the vector empty? " << (numbers.empty() ? "Yes" : "No") << std::endl;
// 获取向量的大小和容量
std::cout << "Vector size: " << numbers.size() << std::endl;
std::cout << "Vector capacity: " << numbers.capacity() << std::endl;
// 清空向量
numbers.clear();
std::cout << "Vector size after clear: " << numbers.size() << std::endl;
return 0;
}
```