std::array和std::vector
时间: 2023-12-14 21:03:10 浏览: 18
std::array和std::vector都是C++ STL库中用于存储一组元素的容器。
std::array是一个固定大小的数组容器,其大小在编译时就已经确定。它的元素被存储在连续的内存块中,支持常数时间的随机访问和迭代器。由于其大小是固定的,所以它不支持动态改变大小。通常用于需要固定大小的场景,如矩阵计算。
std::vector是一个动态大小的数组容器,可以在运行时动态改变其大小。它的元素也被存储在连续的内存块中,支持常数时间的随机访问和迭代器。由于其大小是动态的,所以在需要时可以随时添加或删除元素,但在动态改变大小时会带来一定的性能损失。通常用于需要动态改变大小的场景,如动态数组。
总的来说,std::array适用于大小已知且固定的情况,而std::vector适用于大小不确定或需要动态改变大小的情况。
相关问题
std::array 和 std::vector
std::array和std::vector是C++中的两种容器,它们有一些相似之处,但也有一些重要的区别。
std::array是一个固定大小的数组,它在编译时就确定了大小,并且不能改变。它的大小是类型和元素数量的组合。std::array的元素在内存中是连续存储的,因此可以通过索引快速访问元素。std::array的构造函数、析构函数和赋值操作符都是编译器隐式声明的,这使得它更加轻量级和高效。然而,由于其大小是固定的,所以在需要动态改变大小的情况下,std::array并不适用。
std::vector是一个动态数组,它可以在运行时改变大小。std::vector的元素在内存中是连续存储的,可以通过索引快速访问元素。std::vector提供了一系列的成员函数来操作和管理数组的大小和容量。它的构造函数、析构函数和赋值操作符都是编译器隐式声明的,但它们会动态地分配和释放内存,因此在性能上可能会比std::array稍慢一些。
下面是一个使用std::array和std::vector的例子:
使用std::array:
```cpp
#include <array>
#include <iostream>
int main() {
std::array<int, 3> arr = {1, 2, 3};
for (int i = 0; i < arr.size(); i++) {
std::cout << arr[i] << " ";
}
return 0;
}
```
使用std::vector:
```cpp
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {1, 2, 3};
for (int i = 0; i < vec.size(); i++) {
std::cout << vec[i] << " ";
}
return 0;
}
```
std::array 和 std::vector 示例
当使用C++标准库的std::array和std::vector时,以下是它们的一些示例用法:
示例1:std::array
```cpp
#include <array>
#include <iostream>
int main() {
std::array<int, 5> myArray = {1, 2, 3, 4, 5};
// 访问元素
std::cout << "第一个元素: " << myArray[0] << std::endl;
// 修改元素
myArray[2] = 10;
// 迭代输出元素
for (const auto& element : myArray) {
std::cout << element << " ";
}
std::cout << std::endl;
// 获取数组大小
std::cout << "数组大小: " << myArray.size() << std::endl;
return 0;
}
```
示例2:std::vector
```cpp
#include <vector>
#include <iostream>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
// 添加元素到末尾
myVector.push_back(6);
// 访问元素
std::cout << "第三个元素: " << myVector[2] << std::endl;
// 修改元素
myVector[4] = 10;
// 迭代输出元素
for (const auto& element : myVector) {
std::cout << element << " ";
}
std::cout << std::endl;
// 获取向量大小
std::cout << "向量大小: " << myVector.size() << std::endl;
return 0;
}
```
这些示例展示了如何创建、访问、修改和获取大小等操作std::array和std::vector的基本用法。你可以根据自己的需求使用更多的方法和功能来操作这两个容器。