v <int> pos(MAX)v <int> tmp非类类型'__gnu_cxx :: __ alloc_traits <std :: allocator <int>> :: value_type {aka int}'pos [i] .push_back(tmp );

时间:2019-06-01 11:44:01

标签: c++ vector terminal compiler-errors stl

C ++(STL):

Request for member ‘push_back’ in ‘pos.std::vector<int>::operator[](((std::vector<int>::size_type)i))’, which is of non-class type ‘__gnu_cxx::__alloc_traits<std::allocator<int> >::value_type {aka int}’
   pos[i].push_back(tmp);
vector<int> pos(MAX), vector<int> tmp;

我不知道为什么我的代码出错了。 所以,请告诉我为什么会出现这个错误

目标:我无法给出完整的代码,因为我现在只能在正在运行的竞赛中对部分代码的解决方案进行编码时给出问题。所以,请 告诉我这个错误。然后,我所有其他代码部分都可以正常工作。

我的代码:

/*
 Name: SUSHANT OBEROI
 College: MNNIT ALLAHABAD
 Email: sushantoberoi3@gmail.com
 Handle: soc3
*/

#include<bits/stdc++.h>
using namespace std;

#define sd(a) scanf("%d", &a)
#define slld(a) scanf("%lld", &a)
#define fl(i, a, b) for(int i=a; i<b; i++)
#define fle(i, a, b) for(int i=a; i<=b; i++)
#define ll long long
#define wl(q) while(q--)
#define MAX 300005
#define mp make_pair
#define fi first
#define se second
#define mod 1000000007

void print_output() {                                                                               
    vector<int> pos(MAX);
    fl(i, 0, 100) {
        pos[i].clear();
        vector<int> tmp;
        fl(j, 0, 100) 
            tmp.push_back(j);
        pos[i].push_back(tmp);
    }
}

int main() {
    print_output();
    return 0;
}

我认为(仅根据我个人,我不正确的答案是什么?) 我做得正确,但编译器是错误的。 (很抱歉这么说,但我认为)。

1 个答案:

答案 0 :(得分:0)

您已经定义了vector<int> pos(MAX);的向量int。表达式pos[i]返回对向量元素的引用,该元素在这种情况下为int。语句pos[i].push_back(tmp);尝试在push_back()上调用int成员函数,该成员函数不是类,并且没有该成员函数。

也许您打算创建vector<vector<int>> pos(MAX);(向量的向量)。我不知道,在看到#include<bits/stdc++.h>和那些#define行之后,我对其余的代码不感兴趣。