向量操作

Vector operation

本文关键字:操作 向量      更新时间:2023-10-16

我一直在尝试使用c 中的向量初始化一个数组,并将值插入它。当我编译代码时,我会收到错误。

#include <bits/stdc++.h>
using namespace std;
// Complete the hourglassSum function below.
int hourglassSum(vector<vector<int>> arr) {
  int i,j;
  int sum=0;
  vector<int> vect[16];
  vect.insert(vect.begin(),3,5);
  return 0;
}

**解决方案。

解决方案。 是非类型'std :: vector [16]'

vect.insert(vect.begin((,3,5(;

解决方案。 是非类型'std :: vector [16]'

vect.insert(vect.begin((,3,5(; ** ^~~~~

vector<int> vect[16];

您将vect定义为16个不同(和空的(向量的数组。如果您想要具有16个元素的单个向量,则应执行

vector<int> vect(16);

请注意,如果您使用vect.insert(...),则将向向量添加元素,从16更改其大小。为了解决此问题,要么使用您创建的16个元素和使用,例如,例如vect[i](用于有效的索引i(,或创建一个空的向量并使用vect.emplace_back(...)


如果您真的想要一个数组,并且在编译时已知固定尺寸,则可以使用std::array

array<int, 16> vect;  // Creates an array of 16 int elements

此答案是对OP在评论中的澄清的回应:

您需要的是intvector/array,您可以用以下方式声明一个:

std::vector<int> v(16, 0);

v是一个 16元素初始化为 0的向量。然后,您想将第一个3元素更改为5,可以使用std::fill

std::fill(v.begin(), v.begin() + 3, 5);

包括<bits/stdc++.h>using namespace std;是不良练习。请避免它们。

和Godbolt