使用向量时出现分段错误<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_backemplace_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::vectorstd::vector 不像普通数组你应该使用像 push_back()

这样的方法

查看更多信息here