使用vector<pair<int,int>>时出现分段错误
为什么我的这个代码给出了segmentation fault?我无法找到我出错的地方,对我来说似乎很好。任何帮助都会很棒,谢谢。
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector <pair<int,int>> v;
int arr[5]={1,2,3,4,5};
for(int i=0;i<5;i++)
{
v[i]={arr[i],i};
}
for(int i=0;i<5;i++)
{
cout<<v[i].first<<"n";
}
}
回答
vector <pair<int,int>> v;初始化v为空vector,它不包含任何元素。然后在for循环中v[i]={arr[i],i};并v[i].first导致UB。
您可以使用push_back或emplace_back代替。
for(int i=0;i<5;i++)
{
v.push_back({arr[i],i}); // add element to v
// or
// v.emplace_back(arr[i],i);
}
或者v预先制作包含5个元素。
vector <pair<int,int>> v(5); // initialize v as containing 5 elements
...
for(int i=0;i<5;i++)
{
v[i]={arr[i],i}; // assignment on element
}
THE END
二维码