#2159. C++-编译-storage size of 'xxx' isn't known

C++-编译-storage size of 'xxx' isn't known

Background

Description

storage size of 'xxx' isn't known

xxx的存储大小尚不清楚。在C/C++中,定义数组需要告诉编译器它的大小,如果没有告诉则会报错。

比如:

int a[];    //没有定义数组的大小

推荐的解决方式:

1.在定义时写上它的大小,如果实在不确定要多大可以给它一个很大的值

值得注意的是,在定义数组时应当对其初始化,否则数组的内容将是不确定的,比如:

int a[10000]={0};

2.如果已知数组的内容,可以直接在定义的时候给它赋值

比如:

int a[]={1,2,3,4,5};    //定义的时候赋值,这样它的大小也确定了

3.在方法1中,可能存在数组占用太多内存的问题,对电脑是一个负担,因此我们建议使用vector

vector类的使用时需要加头文件<vector>,这是一个STL(标准模板库),即前辈为我们写好的,并且经过时间检验是实用的东西

这里举一些vector使用的例子

#include <vector>
#include <iostream>
using namespace std;
int main(){
    vector<int> a;    //定义一个int类型的容器
    a.push_back(3);     //往a的末尾放一个数值3
    a.push_back(4);
    a[0]=4;          //更改a的特定位置的值
    int len=a.length()   //获得a的长度
    a.erase(a.begin()+1);     //删除a[1]
    a.pop_back();      //删除a的最后一个值
}

当然vector还有其他丰富的库函数,如有需要可自行百度,这里就不全部列举了

此外,不建议大家在竞赛中使用vector,这些库函数可能会拖慢运行速度,在竞赛中最好先计算好可能需要的数组大小,再按照方法1进行定义

Format

Input

Output

Samples



Limitation

1s, 1024KiB for each test case.