C++ 标准模板库 (STL) 中的向量与示例
什么是 C++ 向量?
一个 C++ 向量 是一个能够自动调整自身大小的动态数组。在向量中添加或删除元素之后,会发生调整大小。存储由容器自动处理。向量的元素存储在连续存储中。这允许 C++ 程序员使用迭代器访问和遍历向量元素。
向向量中插入新数据是在其末尾完成的。这需要一个差分时间。从向量中删除一个元素需要恒定的时间。原因是不需要调整向量的大小。在向量开头插入或删除元素需要线性时间。
在本 C++ 教程中,您将学习:
- 什么是 C++ 向量?
- 何时使用向量?
- 如何在 C++ 中初始化向量
- 迭代器
- 修饰符
- 示例 1
- 示例 2
- 容量
- 示例 3
何时使用向量?
在以下情况下应使用 C++ 向量:
- 在处理不断变化的数据元素时。
- 如果在开始之前不知道数据的大小,则向量不会要求您设置容器的最大大小。
如何在 C++ 中初始化向量
C++中向量的语法是:
vector <data-type> name (items)
- 如上图,我们从vector关键字开始。
- 数据类型是要存储在向量中的元素的数据类型。
- 名称是向量或数据元素的名称。
- 项目表示向量数据的元素数量。此参数是可选的。
迭代器
迭代器的目的是帮助我们访问存储在向量中的元素。它是一个像指针一样工作的对象。以下是 C++ 向量支持的常见迭代器:
- 向量::开始(): 它给出了一个指向向量第一个元素的迭代器。
- 向量::end(): 它提供了一个迭代器,该迭代器指向向量的末尾元素。
- 向量::cbegin(): 和vector::begin()一样,但是没有修改元素的能力。
- 向量::cend(): 和vector::end()一样,但是不能修改向量元素。
修饰符
修饰符用于更改指定数据类型的含义。以下是 C++ 中常用的修饰符:
- 向量::push_back(): 这个修饰符从后面推动元素。
- 向量::插入(): 用于将新项目插入到指定位置的向量中。
- 向量::pop_back(): 此修饰符从后面移除矢量元素。
- vector::erase(): 它用于从指定位置移除一系列元素。
- 向量::clear(): 它会删除所有矢量元素。
示例 1
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; for (int a = 1; a <= 5; a++) nums.push_back(a); cout << "Output from begin and end: "; for (auto a = nums.begin(); a != nums.end(); ++a) cout << *a << " "; cout << "\nOutput from cbegin and cend: "; for (auto a = nums.cbegin(); a != nums.cend(); ++a) cout << *a << " "; return 0; }
输出:
下面是代码截图:
代码说明:
- 在我们的代码中包含 iostream 头文件。它将允许我们读取和写入控制台。
- 在我们的代码中包含矢量头文件。它将允许我们在 C++ 中使用向量。
- 包含 std 命名空间,以便在不调用它的情况下使用它的类和函数。
- 调用 main() 函数,在其中添加程序的逻辑。
- { 标记 main() 函数体的开始。
- 声明一个名为 nums 的向量来存储一组整数。
- 创建一个 for 循环来帮助我们遍历向量。该变量将帮助我们从 1 st 迭代向量元素 至 5 th 元素。
- 将元素从后面推入向量 num 中。对于每次迭代,这会将变量 a 的当前值添加到向量中,即 1 到 5。
- 在控制台上打印一些文本
- 使用迭代器变量 a 迭代向量 nums 的元素,从开始到结束元素。请注意,我们使用的是 vector::begin() 和 vector::end() 迭代器。
- 在每次迭代的控制台上打印迭代器变量 an 指向的值。
- 在控制台上打印一些文本。 \n 是一个换行符,将光标移动到新行以从那里打印。
- 使用迭代器变量迭代向量 nums 的元素,从开始到结束元素。请注意,我们使用的是 vector::cbegin() 和 vector::cend() 迭代器。
- 在每次迭代的控制台上打印迭代器变量 a 指向的值。
- 如果程序运行成功,主函数应该返回一个值。
- main() 函数主体的结尾。
示例 2
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums; nums.assign(5, 1); cout << "Vector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.push_back(2); int n = nums.size(); cout << "\nLast element: " << nums[n - 1]; nums.pop_back(); cout << "\nVector contents: "; for (int a = 0; a < nums.size(); a++) cout << nums[a] << " "; nums.insert(nums.begin(), 7); cout << "\nFirst element: " << nums[0]; nums.clear(); cout << "\nSize after clear(): " << nums.size(); }
输出:
下面是代码截图:
代码说明:
- 在我们的代码中包含 iostream 头文件以使用其功能。
- 在我们的代码中包含矢量头文件以使用其功能。
- 包含 std 命名空间以使用其类而不调用它。
- 调用 main() 函数。程序逻辑应添加到其主体内。
- main() 函数体的开始。
- 声明一个名为 nums 的向量来存储一些整数值。
- 在向量 nums 中存储 5 个元素。每个值为 1。
- 在控制台上打印一些文本
- 使用迭代器变量 a 来迭代向量 nums 的元素。
- 在控制台上打印每次迭代的向量 nums 的值。
- 将值 2 添加到向量 nums 的末尾。
- 声明一个整数变量 n 来存储向量 nums 的大小。
- 将向量 nums 的最后一个值与其他文本一起打印。它应该返回一个 2。
- 从向量 nums 中删除最后一个元素。 2 将被删除。
- 在控制台上打印文本。 \n 将光标移动到新行以在那里打印文本。
- 使用迭代器变量 a 来迭代向量 nums 的元素。
- 在控制台上打印每次迭代的向量 nums 的值。
- 将值 7 插入向量 nums 的开头。
- 将向量 nums 的第一个值与其他文本一起打印。它应该返回 7。
- 从向量 nums 中删除所有元素。
- 清除所有内容后,将向量 num 的大小与其他文本一起打印。它应该返回 0。
- main() 函数主体的结尾。
容量
使用以下函数确定向量的容量:
- 尺寸()—— 它返回向量中的项目数。
- 最大尺寸() - 它返回向量可以存储的最大项目数。
- 容量()——它 返回分配给向量的存储空间量。
- resize()——它 调整容器的大小以包含 n 个项目。如果向量的当前大小大于 n,则后面的项目将从向量中删除。如果向量的当前大小小于 n,则会在向量的后面添加额外的项目。
- 空() –i 如果向量为空,则 t 返回 true。否则,它返回 false。
示例 3
#include <iostream> #include <vector> using namespace std; int main() { vector<int> vector1; for (int x = 1; x <= 10; x++) vector1.push_back(x); cout << "Vector size: " << vector1.size()<< endl; cout << "Vector capacity: " << vector1.capacity() << endl; cout << "Maximum size of vector: " << vector1.max_size()<< endl; vector1.resize(5); cout << "Vector size after resizing: " << vector1.size() << endl; if (vector1.empty() == false) cout << "Vector is not empty"<<endl; else cout << "Vector is empty"<<endl; return 0; }
输出:
下面是代码截图:
代码说明:
- 在我们的代码中包含 iostream 头文件以使用其功能。
- 在我们的代码中包含矢量头文件以使用其功能。
- 在我们的代码中包含 std 命名空间,以便在不调用它的情况下使用它的类。
- 调用 main() 函数。程序逻辑应添加到此函数的主体中。
- 创建一个名为 vector1 的向量来存储整数。
- 使用 for 循环创建值从 1 到 10 的变量 x。
- 将变量 x 的值推入向量中。
- 在控制台上与其他文本一起打印矢量的大小。
- 在控制台上与其他文本一起打印矢量的容量。
- 在控制台上与其他文本一起打印向量可以容纳的最大项目数。
- 调整向量的大小以仅包含 5 个元素。
- 在其他文本旁边打印矢量的新大小。
- 检查向量是否不为空。
- 如果向量不为空,则在控制台上打印文本。
- 使用 else 语句说明当向量为空时该怎么做。
- 如果向量为空,则在控制台上打印文本。
- 程序必须在成功完成后返回值。
- main() 函数体结束。
总结:
- C++ 向量是一个动态数组,能够在添加或删除元素时自动调整自身大小。
- 向量的存储由容器自动处理。
- 向量的元素存储在连续存储中,以便访问然后使用迭代器进行遍历。
- 将新数据插入到向量中是在其末尾完成的。
- 将数据插入向量需要一个微分时间。
- 从向量中移除一个元素需要恒定的时间。
- 在开头插入或删除元素需要线性时间。
- 在处理不断变化的数据元素时应使用向量。
- 此外,如果在开始之前不知道数据的大小,您可以使用向量。
C语言