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

时间:2018-03-14 15:29:01

标签: c++ string push-back

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

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;
}

但结果向量显示错误的结果。那么这里有什么问题?有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

仅使用此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));
}