lucy2012 @ 2024-04-27 21:44:23
发帖.感想:QwQ
#include<bits/stdc++.h>
using namespace std;
int n,p,num,i,j,k;
vector<vector<int> > v;
int main(){
cin>>n>>p;
while(p--){
cin>>num;
if(num==1){
cin>>i>>j>>k;
v[i][j]=k;
}else{
cin>>i>>j;
cout<<v[i][j]<<endl;
}
}
return 0;
}
by cj180202 @ 2024-04-27 21:47:18
v[i][j]=k;
你直接进行了赋值,却没有事先说明
先 resize
即可。
by cj180202 @ 2024-04-27 21:47:29
@lucy2012
by sto__Liyhzh__orz @ 2024-04-27 21:48:29
有没有一种可能,vector<vector<int> >v
一开始没有元素,需要 push_back
。
by lucy2012 @ 2024-04-27 21:50:46
@cj180202 是必须resize吗? 像这样?
#include<bits/stdc++.h>
using namespace std;
int n,p,num,i,j,k;
int main(){
cin>>n>>p;
vector<vector<int> > v(n+1);
while(p--){
cin>>num;
if(num==1){
cin>>i>>j>>k;
if(v[i].size()<j+1)
v[i].resize(j+1);
v[i][j]=k;
}else{
cin>>i>>j;
cout<<v[i][j]<<endl;
}
}
return 0;
}
by lucy2012 @ 2024-04-27 21:53:04
@Liyhzh_C202712 这个一开始就往v里塞东西了吧。。毕竟我改后的代码可以欸
by lucy2012 @ 2024-04-27 21:55:43
@cj180202 @Liyhzh_C202712 就是为什么要resize 。。QwQ不过还是谢谢啦!
by cj180202 @ 2024-04-27 22:28:03
@lucy2012 需要 resize 是因为开始时没有指定 vector 的长度,直接访问位置会像数组一样越界,而 resize 之后 vector 就有长度了,直接访问即可。
by lucy2012 @ 2024-04-27 22:29:09
@cj180202 懂了,谢谢!