从 cin 推回成对的向量给出错误的结果

Pushing back into a vector of pairs from cin giving wrong results

所以我正在尝试构建一个向量,然后将成对项推回其中。代码如下:

int main() 
{
    int n;
    cin >> n;
    vector<pair<int,string>> o(n,make_pair(0," "));

    for(int a0 = 0; a0 < n; a0++)
    {
        int x;
        string s;
        cin>>x>>s;
        o.push_back(make_pair(x,s));
    }
    for(int i=0;i<n;++i)
        cout<<o[i].first;

    return 0;
}

但是生成的矢量显示错误的结果。那么这里有什么问题呢?有人可以帮我吗?

仅使用此 vector<pair<int, string>> o; 您的向量最终将包含 2n 个元素,或者您可以

int n;
cin >> n;
vector<pair<int, string>> o (n, make_pair(0, " "));

for (int a0 = 0; a0 < n; a0++)
{
    int x;
    string s;
    cin >> x >> s;

    auto& it = o.at(a0);
    (it.first) = x;
    it.second = s;
    //o.push_back(make_pair(x, s));
}