#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.