第24行if(j>(ls[i].size()-1))出现错误,求大佬帮助

P3613 【深基15.例2】寄包柜

tierzero @ 2022-03-09 14:49:22

```cpp
#include <bits/stdc++.h>
#define MAXN int(2e7+1)
#define INF int(pow(2,31)-1)
using namespace std;
typedef long long LL;
#define f(m,a,b) for(int m=a;m<=b;m++)
#define f2(i,a,b) for(int i=a;i>=b;i--)
int n,q,d,i,j,k;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
#ifndef ONLINE_JUDGE
    freopen("title.in","r",stdin);
    freopen("title.out","w",stdout);
#endif
    cin>>n>>q;
    vector< vector<int> > ls(n+1);
    while(q--){
        cin>>d;
        if(d==1){
            cin>>i>>j>>k;
            //改成if(j+1>ls[i].size()) 就ac了
            if(j>(ls[i].size()-1))
  //出现异常。
EXC_BAD_ACCESS (code=1, address=0x9c40)
            ls[i].resize(j+1);
            ls[i][j]=k;
        }else if(d==2){
            cin>>i>>j;
            cout<<ls[i][j]<<endl;
        }
    }

    return 0;
}

by bdzzj @ 2022-03-09 14:59:50

size()函数返回的是unsigned long long,如果是0再减一就爆了


by rxjdasiwzl @ 2022-03-09 15:51:58

@bdzzj 返回值是该容器的成员 typedef size_type,而该类型通常被定义为与 std::size_t 相同。而 std::size_t 不一定是 unsigned long long,比如在 Ubuntu 20.04 下就是 unsigned long


|