使用向量时出现分段错误<pair<int,int>>
Segmentation fault while using 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
}
您似乎不知道如何使用 std::vector
。 std::vector
不像普通数组你应该使用像 push_back()
这样的方法
查看更多信息here。
为什么我的这段代码给出 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
}
您似乎不知道如何使用 std::vector
。 std::vector
不像普通数组你应该使用像 push_back()
查看更多信息here。