目录
在 C++ 中,std::vector
是标准库中最常用的容器之一,它可以根据需要自动扩容,能够高效地插入、删除和访问元素。本文将深入介绍 std::vector
的使用方法,包括创建、初始化、插入、删除、访问元素等方面。
创建和初始化
std::vector
是一个动态数组容器,可以存储同一类型的元素,例如整数、浮点数、字符串等。下面是一个创建和初始化 std::vector
对象的示例代码:
#include <vector>
#include <iostream>
int main() {
// 创建一个空的 vector 对象
std::vector<int> myVector;
// 创建一个含有 5 个元素的 vector 对象
std::vector<int> myVector2(5);
// 创建一个含有 5 个元素,每个元素都是 10 的 vector 对象
std::vector<int> myVector3(5, 10);
// 创建一个 vector 对象,初始化为另一个 vector 对象的副本
std::vector<int> myVector4(myVector3);
// 输出 myVector3 中的元素
std::cout << "myVector3 中的元素是:" << std::endl;
for (int i = 0; i < myVector3.size(); ++i) {
std::cout << myVector3[i] << " ";
}
std::cout << std::endl;
return 0;
}
输出结果为:
myVector3 中的元素是:
10 10 10 10 10
在上面的代码中,我们创建了四个不同的 std::vector
对象,并分别进行了初始化。第一个 std::vector
对象是一个空的对象,不包含任何元素。第二个 std::vector
对象是含有 5 个元素的对象,但没有指定元素的值,默认初始化为 0。第三个 std::vector
对象是含有 5 个元素的对象,每个元素都是 10。第四个 std::vector
对象是初始化为第三个 std::vector
对象的副本。
插入和删除元素
std::vector
对象可以动态增加和删除元素,我们可以使用 push_back()
函数向 std::vector
对象中添加元素。下面是一个示例代码,展示了如何向 std::vector
对象中添加元素:
#include <vector>
#include <iostream>
int main() {
// 创建一个空的 vector 对象
std::vector<int> myVector;
// 向 vector 中添加元素
myVector.push_back(1);
myVector.push_back(2);
myVector.push_back(3);
// 输出 vector 中的元素
std::cout << "vector 中的元素是:" << std::endl;
for (int i = 0; i < myVector.size(); ++i) {
std::cout << myVector[i] << " ";
}
std::cout << std::endl;
// 删除 vector 中最后一个元素
myVector.pop_back();
// 输出 vector 中的元素
std::cout << "vector 中的元素是:" << std::endl;
for (int i = 0; i < myVector.size(); ++i) {
std::cout << myVector[i] << " ";
}
std::cout << std::endl;
return 0;
}
输出结果为:
vector 中的元素是:
1 2 3
vector 中的元素是:
1 2
在上面的示例代码中,我们首先创建了一个空的 `std::vector` 对象。然后,我们使用`push_back()` 函数向 `std::vector` 对象中添加三个元素。最后,我们使用 `pop_back()` 函数删除了 `std::vector` 对象中的最后一个元素。在每个步骤结束后,我们都输出了 `std::vector` 对象中的元素。
访问元素
`std::vector` 对象可以像数组一样访问其元素。我们可以使用下标运算符(`[]`)或 `at()` 函数来访问 `std::vector` 对象中的元素。下面是一个示例代码,展示了如何访问 `std::vector` 对象中的元素:
#include <vector>
#include <iostream>
int main() {
// 创建一个含有 3 个元素的 vector 对象
std::vector<int> myVector(3);
myVector[0] = 1;
myVector[1] = 2;
myVector[2] = 3;
// 使用下标运算符访问 vector 中的元素
std::cout << "vector 中的第一个元素是:" << myVector[0] << std::endl;
// 使用 at() 函数访问 vector 中的元素
std::cout << "vector 中的第二个元素是:" << myVector.at(1) << std::endl;
return 0;
}
输出结果为:
vector 中的第一个元素是:1
vector 中的第二个元素是:2
在上面的示例代码中,我们创建了一个含有 3 个元素的 std::vector
对象,并分别使用下标运算符和 at()
函数访问了其中的元素。
其他操作
除了上述操作之外,std::vector
还支持许多其他操作,例如:
size()
:返回std::vector
对象中元素的个数。capacity()
:返回std::vector
对象中已分配的存储空间的大小。reserve(n)
:为std::vector
对象分配至少能容纳n
个元素的存储空间。clear()
:从std::vector
对象中删除所有元素。empty()
:判断std::vector
对象是否为空。
下面是一个示例代码,展示了如何使用这些操作:
#include <vector>
#include <iostream>
int main() {
// 创建一个含有 3 个元素的 vector 对象
std::vector<int> myVector(3);
myVector[0] = 1;
myVector[1] = 2;
myVector[2] = 3;
// 输出 vector 中元素的个数和已分配的存储空间的大小
std::cout << "vector 中元素的个数为:" << myVector.size() << std::endl;
std::cout << "vector 中已分配的存储空间的大小为:" << myVector.capacity() << std::endl;
// 为 vector 对象分配至少能容纳 10 个元素的存储空间
myVector.reserve(10);
// 输出 vector 中元素的个数和已分配的存储空间的大小
std::cout << "vector 中元素的个数为:" << myVector.size() << std::endl;
std::cout << "vector 中已分配的存储空间的大小为:" << myVector.capacity() << std::endl;
// 删除 vector 中的所有元素
myVector.clear();
// 输出 vector 中元素的个数和已分配的存储空间的大小
std::cout << "vector 中元素的个数为:" << myVector.size() << std::endl;
std::cout << "vector 中已分配的存储空间的大小为:" << myVector.capacity() << std::endl;
// 判断 vector 是否为空
if (myVector.empty()) {
std::cout << "vector 为空。" << std::endl;
} else {
std::cout << "vector 不为空。" << std::endl;
}
return 0;
}
输出结果为:
vector 中元素的个数为:3
vector 中已分配的存储空间的大小为:3
vector 中元素的个数为:3
vector 中已分配的存储空间的大小为:10
vector 中元素的个数为:0
vector 中已分配的存储空间的大小为:10
vector 为空。
在上面的示例代码中,我们首先创建了一个含有 3 个元素的 `std::vector` 对象,并输出了其中的元素个数和已分配的存储空间的大小。然后,我们使用 `reserve()` 函数为 `std::vector` 对象分配至少能容纳 10 个元素的存储空间,并输出了其中的元素个数和已分配的存储空间的大小。接着,我们使用 `clear()` 函数删除了 `std::vector` 对象中的所有元素,并输出了其中的元素个数和已分配的存储空间的大小。最后,我们使用 `empty()` 函数判断 `std::vector` 对象是否为空,并输出了相应的结果。
总结
本文介绍了 std::vector
的用法。 std::vector 是 C++ 标准库中的一个容器,用于存储一组具有相同类型的元素。 std::vector
具有动态分配内存、随机访问、尾部添加和删除元素等特性,是C++中常用的数据结构之一。在使用 std::vector
时,需要注意以下几点:
- 通过调用
std::vector
的构造函数或push_back()
函数可以向其中添加元素; - 通过下标操作符
[]
可以访问指定位置的元素; - 通过调用
size()
函数可以获取std::vector
中的元素个数; - 通过调用
capacity()
函数可以获取std::vector
中已分配的存储空间的大小; - 通过调用
reserve()
函数可以为std::vector
对象分配至少能容纳指定个数的元素的存储空间; - 通过调用
clear()
函数可以删除std::vector
中的所有元素; - 通过调用
empty()
函数可以判断std::vector
是否为空。
除了上述常用操作外,std::vector
还支持其他许多操作,如插入元素、删除元素、交换 std::vector
对象、查找元素等。在使用 std::vector
时,需要根据具体需求选择合适的操作。
总的来说,std::vector
是一个非常实用的容器,可以帮助我们快速、高效地管理一组元素。对于 C++ 开发者来说,掌握 std::vector
的使用是非常重要的,希望本文能对您有所帮助。