std::array<int,1000> arr; std::vector <int> vec (1000)
时间: 2023-09-25 18:11:48 浏览: 80
这两行代码都定义了一个长度为1000的整型数组,但是它们的实现方式略有不同。
第一行使用了 C++11 的 std::array 容器,它是一个在编译时就会被分配好固定大小的数组,因此可以在栈上分配,而且可以使用数组的所有操作,例如 `[]` 运算符、`at()` 函数等。同时,std::array 还提供了一些额外的操作,例如 `size()` 函数、`swap()` 函数等,可以方便地进行数组的管理。
第二行则使用了 C++标准库的 std::vector 容器,它是一个动态数组,大小可以在运行时动态改变,因此需要在堆上分配内存。和 std::array 一样,std::vector 也提供了一些基本操作,例如 `[]` 运算符、`at()` 函数等,但是也提供了一些 std::array 没有的操作,例如 `push_back()` 函数、`resize()` 函数等,可以方便地进行数组的动态管理。
总的来说,如果数组大小是固定的,建议使用 std::array;如果数组大小需要动态改变,建议使用 std::vector。
相关问题
如何取出std::multimap<int, std::vector<std::array<double, 3> > > ret内的内容
可以使用迭代器来遍历`std::multimap<int, std::vector<std::array<double, 3> > >`类型的变量`ret`,然后将其中的元素取出来。以下是一个示例代码:
```c++
#include <iostream>
#include <map>
#include <vector>
#include <array>
int main()
{
std::multimap<int, std::vector<std::array<double, 3>>> ret = {
{1, {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}}},
{2, {{7.0, 8.0, 9.0}, {10.0, 11.0, 12.0}}}
};
// 遍历 multimap
for(auto it = ret.begin(); it != ret.end(); ++it) {
std::cout << "key: " << it->first << std::endl;
// 遍历 vector
for(auto& vec : it->second) {
// 遍历 array
for(auto& arr : vec) {
std::cout << arr[0] << ", " << arr[1] << ", " << arr[2] << std::endl;
}
}
}
return 0;
}
```
输出结果为:
```
key: 1
1, 2, 3
4, 5, 6
key: 2
7, 8, 9
10, 11, 12
```
可以看到,在遍历`std::multimap<int, std::vector<std::array<double, 3> > >`类型的变量时,我们需要先遍历`multimap`的键值对,然后遍历对应的`vector`,最后遍历`vector`中每个`array`的元素。
vector<array<int, 3> > vector;如何通过cin给vector变量赋值
可以使用 `std::cin` 和嵌套的循环语句来为 `std::vector<std::array<int, 3>>` 类型的变量赋值。
以下是一个示例代码,可以从标准输入流中读取多行数据,每行包含三个整数,将它们存储到一个 `std::vector<std::array<int, 3>>` 类型的变量中:
```
#include <iostream>
#include <vector>
#include <array>
int main() {
std::vector<std::array<int, 3>> vec;
int n; // 数据行数
std::cin >> n;
for (int i = 0; i < n; ++i) {
std::array<int, 3> arr;
for (int j = 0; j < 3; ++j) {
std::cin >> arr[j];
}
vec.push_back(arr);
}
// 输出 vector 中的内容
for (const auto& arr : vec) {
for (int x : arr) {
std::cout << x << " ";
}
std::cout << std::endl;
}
return 0;
}
```
以上代码首先声明了一个 `std::vector<std::array<int, 3>>` 类型的变量 `vec`,并从标准输入流中读取一个整数 `n`,表示数据行数。然后使用嵌套的 for 循环,逐行读取三个整数,并将它们存储到一个 `std::array<int, 3>` 类型的数组中,最后将该数组添加到 `vec` 中。
最后,使用两个嵌套的循环语句遍历 `vec` 中的元素,并将它们依次输出到标准输出流中。
阅读全文