【问题标题】:'struct std::pair<int, int>' has no member named 'push_back' [closed]'struct std::pair<int, int>' 没有名为 'push_back' 的成员 [关闭]
【发布时间】:2016-07-14 09:22:43
【问题描述】:

我创建了一个对的向量,并希望使用 make pair 初始化这些对的值,但出现此错误:

'struct std::pair' 没有名为 'push_back' 的成员

这是我的代码:

const int maxm=100005;//10^5
vector<pair<int,int> > v(maxm);

int main(){
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        int x, y;
        scanf("%d %d",&x,&y);
        v[i].push_back(make_pair(x,y));
    }
}

【问题讨论】:

    标签: c++ c++11 vector struct std-pair


    【解决方案1】:

    那是因为v[i]std::pair&lt;int, int&gt; 类型,你应该:

    v.push_back(make_pair(x,y));
    

    【讨论】:

    • 但我需要考虑一个 maxn 向量数组
    • 我要制作一组成对的向量
    • v.push_back 在索引i 处向您的向量添加另一对 - 让array of maxn vectors 我不清楚
    • @kolaveri - 如果你想要一个向量对的向量,那么你应该这样声明v。当问题如此模糊时,很难回答。
    • @kolaveri: "我需要这样的东西 (a1 a2 ) (,a2,a3,)(a4,a5 )......说 10 次"那是您声明和创建的对向量。那是不是向量数组,这是你一直说你想要的。所以你似乎对“数组”和“向量”这两个术语感到困惑。
    【解决方案2】:
    vector<pair<int,int> > v(maxm);
    

    这只会生成一个大小为 maxn 的向量。你想要的是一个向量数组,所以你应该这样做

    vector<pair<int,int> > v[maxm];
    

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-29
      • 2021-12-31
      • 1970-01-01
      相关资源
      最近更新 更多