## C++ Vector assign() 方法详解### 简介`assign()` 是 C++ STL 中 `vector` 容器提供的一个成员函数,用于为向量赋予新的内容。它可以替换向量中所有现有的元素,并根据需要调整向量的大小。### `assign()` 方法重载`vector` 的 `assign()` 方法有多种重载形式,以便适应不同的赋值需求:1.
使用迭代器范围赋值:
```c++void assign (InputIterator first, InputIterator last);```此版本使用一对迭代器 `first` 和 `last` 指定的范围内的元素来替换向量中的元素。 迭代器 `first` 指向要复制的第一个元素,而 `last` 指向要复制的最后一个元素之后的地址。
示例:
```c++#include #include int main() {std::vector numbers1 = {1, 2, 3};std::vector numbers2;// 使用 numbers1 的全部元素赋值给 numbers2numbers2.assign(numbers1.begin(), numbers1.end());for (int x : numbers2) {std::cout << x << " ";}// 输出: 1 2 3std::cout << std::endl;return 0;}```2.
使用相同值的多个元素赋值:
```c++void assign (size_type n, const value_type& val);```此版本用 `n` 个值为 `val` 的元素替换向量中的所有元素。
示例:
```c++#include #include int main() {std::vector numbers;// 使用 5 个值为 10 的元素赋值给 numbersnumbers.assign(5, 10);for (int x : numbers) {std::cout << x << " ";} // 输出: 10 10 10 10 10std::cout << std::endl;return 0;}```3.
使用初始化列表赋值 (C++11 起):
```c++void assign (initializer_list il);```此版本使用初始化列表 `il` 中的元素替换向量中的所有元素。
示例:
```c++#include #include int main() {std::vector numbers;// 使用初始化列表赋值numbers.assign({1, 2, 3, 4, 5});for (int x : numbers) {std::cout << x << " ";}// 输出: 1 2 3 4 5 std::cout << std::endl;return 0;}```### 注意
`assign()` 方法会清空向量中所有现有的元素,并将新元素复制到向量中。
使用迭代器范围赋值时,请确保迭代器指向有效的内存区域,并且 `first` 位于 `last` 之前。
`assign()` 方法可能会导致向量重新分配内存空间,以容纳新的元素。### 总结`assign()` 方法是操作 C++ `vector` 容器的强大工具,它提供了多种灵活的方式来修改向量的内容。 了解其不同的重载形式可以帮助您更有效地使用 `vector`。
C++ Vector assign() 方法详解
简介`assign()` 是 C++ STL 中 `vector` 容器提供的一个成员函数,用于为向量赋予新的内容。它可以替换向量中所有现有的元素,并根据需要调整向量的大小。
`assign()` 方法重载`vector` 的 `assign()` 方法有多种重载形式,以便适应不同的赋值需求:1. **使用迭代器范围赋值:**```c++void assign (InputIterator first, InputIterator last);```此版本使用一对迭代器 `first` 和 `last` 指定的范围内的元素来替换向量中的元素。 迭代器 `first` 指向要复制的第一个元素,而 `last` 指向要复制的最后一个元素之后的地址。**示例:**```c++
include
include int main() {std::vector numbers1 = {1, 2, 3};std::vector numbers2;// 使用 numbers1 的全部元素赋值给 numbers2numbers2.assign(numbers1.begin(), numbers1.end());for (int x : numbers2) {std::cout << x << " ";}// 输出: 1 2 3std::cout << std::endl;return 0;}```2. **使用相同值的多个元素赋值:**```c++void assign (size_type n, const value_type& val);```此版本用 `n` 个值为 `val` 的元素替换向量中的所有元素。 **示例:**```c++
include
include int main() {std::vector numbers;// 使用 5 个值为 10 的元素赋值给 numbersnumbers.assign(5, 10);for (int x : numbers) {std::cout << x << " ";} // 输出: 10 10 10 10 10std::cout << std::endl;return 0;}```3. **使用初始化列表赋值 (C++11 起):**```c++void assign (initializer_list il);```此版本使用初始化列表 `il` 中的元素替换向量中的所有元素。 **示例:**```c++
include
include int main() {std::vector numbers;// 使用初始化列表赋值numbers.assign({1, 2, 3, 4, 5});for (int x : numbers) {std::cout << x << " ";}// 输出: 1 2 3 4 5 std::cout << std::endl;return 0;}```
注意* `assign()` 方法会清空向量中所有现有的元素,并将新元素复制到向量中。
* 使用迭代器范围赋值时,请确保迭代器指向有效的内存区域,并且 `first` 位于 `last` 之前。
* `assign()` 方法可能会导致向量重新分配内存空间,以容纳新的元素。
总结`assign()` 方法是操作 C++ `vector` 容器的强大工具,它提供了多种灵活的方式来修改向量的内容。 了解其不同的重载形式可以帮助您更有效地使用 `vector`。