Why this code of mine is giving segmentation fault
? I am not able to get where I am going wrong, to me it seems fine. Any help will be great, thank you.
#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;
initializes v
as an empty vector
, it contains no elements. Then in for
loops v[i]={arr[i],i};
and v[i].first
lead to UB.
You could use push_back
or emplace_back
instead.
for(int i=0;i<5;i++)
{
v.push_back({arr[i],i}); // add element to v
// or
// v.emplace_back(arr[i],i);
}
Or make v
containing 5 elements in advance.
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
}